2017-02-19 6 views
1

bekomme ich folgende Fehlermeldung auf meinem XSD-Dokument:XSD: Fehler: Element ‚Attribut‘ ist ungültig, fehl am Platz, oder kommt zu oft

Element 'attribute' is invalid, misplaced, or occurs too often.

und ich habe keine Ahnung, warum.

Hier ist meine XSD-Datei:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="bookcollection"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="book" maxOccurs="unbounded"> 
      <xs:complexType mixed="true"> 
      <xs:sequence> 
       <xs:element name="name" type="xs:string"/> 
       <xs:element name="image" type="xs:anyURI"/> 
       <xs:element name="quantity" type="xs:string"/> 
       <xs:element name="price"> 
       <xs:complexType> 
        <xs:simpleContent> 
        <xs:extension base="xs:decimal"/> 
        <xs:attribute name="currency" default="EUR" 
            maxOccurs="unbounded"/> 
        <xs:simpleType> 
         <xs:restriction base="xs:string"> 
         <xs:enumeration value="EUR"/> 
         <xs:enumeration value="DOLLARS"/> 
         <xs:enumeration value="ISK"/> 
         </xs:restriction> 
        </xs:simpleType> 
        </xs:simpleContent> 
       </xs:complexType> 
       </xs:element> 
       <xs:element name="shipping" type="xs:string"/> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

Antwort

2

Um diesen Fehler zu korrigieren, bewegen Sie das xs:attribute Element innerhalb der xs:extension, nicht nachdem er, wie es scheint zur Zeit.

Der nächste Fehler, der auftritt, kann behoben werden, indem xs:simpleType in xs:attribute verschoben wird, nicht danach, wie es derzeit angezeigt wird.

Insgesamt folgende XSD hat beide Korrekturen angewendet und hat keine weiteren Fehler:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="bookcollection"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="book" maxOccurs="unbounded"> 
      <xs:complexType mixed="true"> 
      <xs:sequence> 
       <xs:element name="name" type="xs:string"/> 
       <xs:element name="image" type="xs:anyURI"/> 
       <xs:element name="quantity" type="xs:string"/> 
       <xs:element name="price"> 
       <xs:complexType> 
        <xs:simpleContent> 
        <xs:extension base="xs:decimal"> 
         <xs:attribute name="currency" default="EUR"> 
         <xs:simpleType> 
          <xs:restriction base="xs:string"> 
          <xs:enumeration value="EUR"/> 
          <xs:enumeration value="DOLLARS"/> 
          <xs:enumeration value="ISK"/> 
          </xs:restriction> 
         </xs:simpleType> 
         </xs:attribute> 
        </xs:extension> 
        </xs:simpleContent> 
       </xs:complexType> 
       </xs:element> 
       <xs:element name="shipping" type="xs:string"/> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

Ein letzter Hinweis, es sei denn, Sie wirklich Text zwischen den Kindern Elemente book zulassen möchten, entfernen Sie mixed="true" aus seiner xs:complexType Erklärung .

+0

Danke @kjhughes! – JavaApprentice