IDREF-attribute not connecting with IDs in XML-Document

671 Views Asked by At

Validating the following xml-file:

<?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>

... against this schema:

<?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>

... produces the following error message: Error: Invalid content was found starting with element 'pfleger'. One of '{zootier}' is expected.

Apparently there are problems with my ID-Reference. (The element "beherbergt" has a reference referring to one of the "zootier"-elements).

I used attribute-type "xs:ID" for the ID and attribute-type "xs:IDREF" for the reference to the ID. As far as I can tell, this is syntactically correct.

Still, the computer cannot make the connection and I don't know why. If anybody knows please drop me a line.

0

There are 0 best solutions below