IDREF-атрибут не соединяется с идентификаторами в XML-документе
Проверка следующего 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>
... выдает следующее сообщение об ошибке: Ошибка: найдено недопустимое содержимое, начиная с элемента 'pfleger'. Ожидается один из '{zootier}'.
Видимо есть проблемы с моей ID-ссылкой. (Элемент "beherbergt" имеет ссылку на один из элементов "zootier").
Я использовал тип атрибута "xs:ID" для идентификатора и тип атрибута "xs:IDREF" для ссылки на идентификатор. Насколько я могу сказать, это синтаксически правильно.
Тем не менее, компьютер не может установить соединение, и я не знаю почему. Если кто-нибудь знает, пожалуйста, напишите мне.