IDREF属性未与XML-Document中的ID连接

时间:2017-02-12 15:47:36

标签: xml xsd idref

验证以下xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<zoo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="Aufgabe1.xsd" name="zoogarten">
    <zootier xsi:type="gans_ct" id="tier1" flugfaehig="false">
        <name>erna</name>
        <alter>2</alter>
        <schlachtgewicht>1500</schlachtgewicht>
    </zootier>
    <zootier id="tier2" xsi:type="pferd_ct" schimmel="false">
        <name>peter</name>
        <alter>4</alter>
        <tragezeit>11</tragezeit>
    </zootier>
    <zootier id="tier3" xsi:type="katze_ct">
      <name>minka</name>
      <alter>3</alter>
      <tragezeit>2</tragezeit>
      <fellfarbe>hell</fellfarbe>
    </zootier>
    <zootier id="tier4" xsi:type="fink_ct" beringt="true" flugfaehig="true">
        <name>piere</name>
        <alter>2</alter>
    </zootier>
    <pfleger name="meinhold">
        <pflegt tier="tier1"/>
        <pflegt tier="tier2"/>
    </pfleger>
    <pfleger name="guntram">
        <pflegt tier="tier3"/>
        <pflegt tier="tier4"/>
    </pfleger>
    <behausung xsi:type="gebaeude_ct" name="vogelhaus">
        <beherbergt tier="tier2"/>
        <beherbergt tier="tier3"/>
        <beherbergt tier="tier4"/>
        <flaeche>230.78</flaeche>
    </behausung>
    <behausung xsi:type="teich_ct" name="grosser Teich">
        <beherbergt tier="tier1"/>
        <wassertiefe>2.3</wassertiefe>
    </behausung>
</zoo>

...反对这个架构:

<?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" type="zoo_ct"/>

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



    <xs:element name="zootier" type="zootier_ct"/>

    <xs:complexType name="zootier_ct">
        <xs:sequence>
            <xs:element name="name" type="xs:string"/> 
            <xs:element name="alter" type="xs:positiveInteger"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>

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

    <xs:complexType name="pferd_ct">
        <xs:complexContent>
            <xs:extension base="säugetier_ct">
                 <xs:attribute name="schimmel" type="xs:boolean"/>        
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="katze_ct">
        <xs:complexContent>
             <xs:extension base="säugetier_ct">
                <xs:sequence>
                    <xs:element name="fellfarbe" type="xs:string"/>  
                </xs:sequence>
             </xs:extension>      
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="vogel_ct">
        <xs:complexContent>
            <xs:extension base="zootier_ct">
                <xs:attribute name="flugfaehig" type="xs:boolean"/>          
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="gans_ct">
        <xs:complexContent>
            <xs:extension base="vogel_ct">
                <xs:sequence>
                    <xs:element name="schlachtgewicht" type="xs:double"/>  
                </xs:sequence>            
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="fink_ct">
        <xs:complexContent>
            <xs:extension base="vogel_ct">
                 <xs:attribute name="beringt" type="xs:boolean"/>     
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>



    <xs:element name="pfleger" type="pfleger_ct"/>

    <xs:complexType name="pfleger_ct">
        <xs:sequence>
            <xs:element name="pflegt" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:attribute name="tier" type="xs:IDREF"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>



    <xs:element name="behausung" type="behausung_ct"/>

    <xs:complexType name="behausung_ct">
        <xs:sequence>  
            <xs:element name="beherbergt" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:attribute name="tier" type="xs:IDREF"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence> 
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>

    <xs:complexType name="gebäude_ct">
        <xs:complexContent>
            <xs:extension base="behausung_ct">
                <xs:sequence>
                    <xs:element name="flaeche" 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>

...产生以下错误消息: 错误:从元素&#39; pfleger&#39;开始发现无效内容。 &#39; {zootier}&#39;是预期的。

显然我的ID-Reference存在问题。 (元素&#34; beherbergt&#34;引用了一个&#34; zootier&#34; -elements)。

我使用了属性类型&#34; xs:ID&#34;对于ID和属性类型&#34; xs:IDREF&#34;用于引用ID。据我所知,这在语法上是正确的。

但是,计算机无法建立连接,我也不知道为什么。 如果有人知道,请给我留言。

0 个答案:

没有答案