XML で要素の相互参照を実行しようとしていますが、成功しません。ここに私のスキーマがあります:
<?xml version="1.0"?>
<xs:schema version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:complexType name="guestType">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="addressType"/>
</xs:sequence>
<xs:attribute name="id" type="xs:ID"/>
<xs:attribute name="ref" type="xs:IDREF"/>
</xs:complexType>
<xs:complexType name="addressType">
<xs:sequence>
<xs:element name="houseNumber" type="xs:integer"/>
<xs:element name="roadName" type="xs:string"/>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="ref" type="xs:IDREF"/>
</xs:complexType>
<xs:element name="event">
<xs:complexType>
<xs:sequence>
<xs:element name="time" type="xs:time"/>
<xs:choice maxOccurs="unbounded">
<xs:element name="guest" type="guestType"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XML ドキュメントのコードは次のとおりです。
<eventxmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:noNamespaceSchemaLocation='src/tests/newXmlSchema.xsd'>
<time>14:00:00</time>
<guest id="1">
<name>John</name>
<address id="add1">
<houseNumber>222</houseNumber>
<roadName>Meat Street</roadName>
</address>
</guest>
<guest id="2">
<name>Henry</name>
<address ref="add1"/>
</guest>
</event>
私は検証にNetbeansを使用しています。検証により、次のエラーがスローされます。
<address ref="add1"/>
エラーは次のとおりです。
cvc-complex-type.2.4.b: The content of element 'address' is not complete. One of '{houseNumber}' is expected.
私は何を間違っていますか?前もって感謝します。
PS。これほど基本的なものを含む以前の質問は見つかりませんでした。他の人は XLS を使用していましたが、これは私が使用すべきものですか?