1

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 を使用していましたが、これは私が使用すべきものですか?

4

0 に答える 0