it-swarm.dev

Prvek nemůže mít znak [děti], protože typ obsahu typu je pouze element

Pokusil jsem se ověřit soubor XML pomocí souboru XSD, ale zobrazí se následující chybová zpráva: 

[Chyba]: cvc-complex-type.2.3: Element 'odstavec' nemůže mít Znak [děti], protože typ obsahu typu je pouze elementární

Což (pokud to chápu správně) znamená, že složitý typ nemůže mít kombinaci jednoduchých a složitých typizovaných prvků jako dětí.

Jak to ale opravím? Jsem k tomu stále trochu nová, takže řešení by mohlo být jednoduché?

Můj kód je zobrazen níže:

XSD:

<?xml version="1.0" encoding="UTF-8"?>
   <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
         <xs:element name="biography">
               <xs:complexType>
                     <xs:sequence>
                           <xs:element name="paragraph" maxOccurs="unbounded">
                                 <xs:complexType>
                                       <xs:sequence>
                                             <xs:element name="name">
                                                   <xs:complexType>
                                                         <xs:sequence>
                                                               <xs:element name="first_name" type="xs:string" minOccurs="0"></xs:element>
                                                               <xs:element name="last_name" type="xs:string"></xs:element>
                                                         </xs:sequence>
                                                   </xs:complexType>
                                             </xs:element>
                                             <xs:element name="emphasize" maxOccurs="unbounded" minOccurs="0" type="xs:string"></xs:element>
                                             <xs:element name="profession" maxOccurs="unbounded" minOccurs="0" type="xs:string"></xs:element>
                                             <xs:element name="date" minOccurs="0">
                                                   <xs:complexType>
                                                         <xs:sequence>
                                                               <xs:element name="month" type="xs:string"></xs:element>
                                                               <xs:element name="day" type="xs:int"></xs:element>
                                                               <xs:element name="year" type="xs:int"></xs:element>
                                                         </xs:sequence>
                                                   </xs:complexType>
                                             </xs:element>
                                       </xs:sequence>
                                 </xs:complexType>
                           </xs:element>
                           <xs:element name="definition" maxOccurs="unbounded">
                                 <xs:complexType>
                                       <xs:sequence>
                                             <xs:element name="term" type="xs:string"></xs:element>
                                       </xs:sequence>
                                 </xs:complexType>
                           </xs:element>
                     </xs:sequence>
               </xs:complexType>
         </xs:element>
   </xs:schema>

XML:

<biography>
 <paragraph>
  <name><first_name>Alex</first_name> <last_name>Turing</last_name></name>
  was one of the first people to truly deserve the name <emphasize>computer
  scientist</emphasize>. Although his contributions to the fields are too
  numerous to lst, his best-known are the famous <emphasize>Turing
  Test</emphasize> and <emphasize>Turing Machine</emphasize>.
 </paragraph>

 <definition>The <term>Turing Test</term> is to this day the standard test
  for determining whether a computer is truly intelligent. This test yet
  has to be passed.</definition>

 <definition>A <term>Turing Machine</term> is an abstract finite state
 automaton with infinite memory that can be proven equivalent to any other
 finite state automaton with arbitrarily large memory. Thus what is true
 for one Turing machine is true for all Turing machines no matter how
 implemented.</definition>

 <paragraph>
  <name><last_name>Turing</last_name></name> was also an accomplished
  <profession>mathematician</profession> and
  <profession>cryptographer</profession>. His assistance was crucial in
  helping the Allies decode the German Enigma cipher. He committed suicide
  on <date><month>June</month> <day>7</day>, <year>1954</year></date>
  after being convicted of homosexuality and forced to take female hormone
  injections.
  </paragraph>
</biography>
6
Toshan

To je přesně účel smíšené content:

    <xs:element name="paragraph" maxOccurs="unbounded">
      <xs:complexType mixed="true">

A:

    <xs:element name="definition" maxOccurs="unbounded">
      <xs:complexType mixed="true">

Všimněte si také, že chcete, aby paragraph a definition byly v souboru xs:choice macOccurs="unbounded" s vaším XML.

Zde je váš XSD aktualizován se všemi potřebnými změnami, aby byl váš XML platný:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="biography">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element name="paragraph">
          <xs:complexType mixed="true">
            <xs:sequence>
              <xs:element name="name">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="first_name" type="xs:string" minOccurs="0"></xs:element>
                    <xs:element name="last_name" type="xs:string"></xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="emphasize" maxOccurs="unbounded" minOccurs="0" type="xs:string"></xs:element>
              <xs:element name="profession" maxOccurs="unbounded" minOccurs="0" type="xs:string"></xs:element>
              <xs:element name="date" minOccurs="0">
                <xs:complexType mixed="true">
                  <xs:sequence>
                    <xs:element name="month" type="xs:string"></xs:element>
                    <xs:element name="day" type="xs:int"></xs:element>
                    <xs:element name="year" type="xs:int"></xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="definition">
          <xs:complexType mixed="true">
            <xs:sequence>
              <xs:element name="term" type="xs:string"></xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>
5
kjhughes

Pro mě Tato chyba se děje kvůli podivnému charakteru v xml Když jsem porovnal dva soubory s podobnými daty v nástroji "BeyondCompare" Našel jsem neznámý znak, který není viditelný. Otevřete vadný soubor v "Visual Studio Code" mi ukázal některé speciální znaky.

Když jsem kopírovat řetězec v online nástroje najít speciální znaky, Zjistil jsem, že je speciální znak (& # 65279).

Kvůli této povaze jsem dostal chybu. Nalezení řešení trvalo dva týdny.

2
Varun M