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