2017-01-31 19 views
1

我寫了下面的XML模式:XML模式 - 內complexType元素引起錯誤消息

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" elementFormDefault="qualified" 
    vc:minVersion="1.0" vc:maxVersion="1.1"> 

    <xs:element name="zoo_ct"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="name" type="xs:string"/> 
       <xs:element name="zootier_ct" type="Tier" maxOccurs="unbounded"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 

    <xs:complexType name="Tier"> 
     <xs:sequence> 
      <xs:element name="name" type="xs:string"/> 
      <xs:element name="alter" type="xs:positiveInteger"/> 
     </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="säugetier_ct"> 
     <xs:complexContent> 
      <xs:extension base="Tier"> 
       <xs:element name="tragezeit" type="xs:positiveInteger"/> 
      </xs:extension> 
     </xs:complexContent> 
    </xs:complexType> 


    <xs:complexType name="vogel_ct"> 
     <xs:complexContent> 
      <xs:extension base="Tier"> 
       <xs:element name="flugfähig" type="xs:boolean"/> 
      </xs:extension> 
     </xs:complexContent> 
    </xs:complexType> 


    <xs:complexType name="pfleger_ct"> 
     <xs:element name="zootier_ct" type="Tier" maxOccurs="unbounded"/> 
    </xs:complexType> 





    <xs:complexType name="behausung_ct"> 
     <xs:element name="bezeichnung" type="xs:string"/> 
     <xs:element name="zootier_ct" type="Tier" maxOccurs="unbounded"/> 
    </xs:complexType> 


    <xs:complexType name="gebäude_ct"> 
     <xs:complexContent> 
      <xs:extension base="behausung_ct"> 
       <xs:element name="fläche" type="xs:double"/> 
      </xs:extension> 
     </xs:complexContent> 
    </xs:complexType> 

    <xs:complexType name="teich_ct"> 
     <xs:complexContent> 
      <xs:extension base="behausung_ct"> 
       <xs:element name="wassertiefe" type="xs:double"/> 
      </xs:extension> 
     </xs:complexContent> 
    </xs:complexType> 






</xs:schema> 

然而,在運行此時,它導致6的錯誤信息,其中的每一個是相同的的(!)類型:一些被認爲是錯誤的包含相應的複雜類型中的元素:

The content of 'säugetier_ct' is invalid. Element 'element' is invalid, misplaced, or occurs too often. 

The content of 'vogel_ct' is invalid. Element 'element' is invalid, misplaced, or occurs too often. 

The content of 'pfleger_ct' is invalid. Element 'element' is invalid, misplaced, or occurs too often. 

The content of 'behausung_ct' is invalid. Element 'element' is invalid, misplaced, or occurs too often. 

The content of 'gebäude_ct' is invalid. Element 'element' is invalid, misplaced, or occurs too often. 

The content of 'teich_ct' is invalid. Element 'element' is invalid, misplaced, or occurs too often. 

我不明白什麼應該是錯誤的各元素。 這是代碼中最簡單的部分,我絕對相信這是正確的語法。

有人知道這裏發生了什麼嗎?

回答

1

在XSD中,xs:complexTypexs:extension不能有xs:element作爲直接孩子。

這裏是xs:sequence包裝您的XSD補充說:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" 
      elementFormDefault="qualified" 
      vc:minVersion="1.0" vc:maxVersion="1.1"> 
    <xs:element name="zoo_ct"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="name" type="xs:string"/> 
     <xs:element name="zootier_ct" type="Tier" maxOccurs="unbounded"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    <xs:complexType name="Tier"> 
    <xs:sequence> 
     <xs:element name="name" type="xs:string"/> 
     <xs:element name="alter" type="xs:positiveInteger"/> 
    </xs:sequence> 
    </xs:complexType> 
    <xs:complexType name="säugetier_ct"> 
    <xs:complexContent> 
     <xs:extension base="Tier"> 
     <xs:sequence> 
      <xs:element name="tragezeit" type="xs:positiveInteger"/> 
     </xs:sequence> 
     </xs:extension> 
    </xs:complexContent> 
    </xs:complexType> 
    <xs:complexType name="vogel_ct"> 
    <xs:complexContent> 
     <xs:extension base="Tier"> 
     <xs:sequence> 
      <xs:element name="flugfähig" type="xs:boolean"/> 
     </xs:sequence> 
     </xs:extension> 
    </xs:complexContent> 
    </xs:complexType> 
    <xs:complexType name="pfleger_ct"> 
    <xs:sequence> 
     <xs:element name="zootier_ct" type="Tier" maxOccurs="unbounded"/> 
    </xs:sequence> 
    </xs:complexType> 
    <xs:complexType name="behausung_ct"> 
    <xs:sequence> 
     <xs:element name="bezeichnung" type="xs:string"/> 
     <xs:element name="zootier_ct" type="Tier" maxOccurs="unbounded"/> 
    </xs:sequence> 
    </xs:complexType> 
    <xs:complexType name="gebäude_ct"> 
    <xs:complexContent> 
     <xs:extension base="behausung_ct"> 
     <xs:sequence> 
      <xs:element name="fläche" type="xs:double"/> 
     </xs:sequence> 
     </xs:extension> 
    </xs:complexContent> 
    </xs:complexType> 
    <xs:complexType name="teich_ct"> 
    <xs:complexContent> 
     <xs:extension base="behausung_ct"> 
     <xs:sequence> 
      <xs:element name="wassertiefe" type="xs:double"/> 
     </xs:sequence> 
     </xs:extension> 
    </xs:complexContent> 
    </xs:complexType> 
</xs:schema> 

這樣就解決了所有的錯誤。

+0

完美!非常感謝...解決了它。 – Tommy