【发布时间】:2014-01-29 01:10:52
【问题描述】:
我正在处理一项为活动日历整理 XML 文档的任务,该活动日历由具有名称、日期、地点等子元素的活动元素组成。多个活动具有相同的地点,但每个活动都有联系信息场地仅在 XML 数据中列出一次。那么,我在 XML 文档中的内容:
<venueinfo>
<venue id="p1">
<name>...</name>
<address>...</address>
...
</venue>
<venue id="p2">
...
</venue>
...
</venueinfo>
在事件元素中:
<event>
<name>...</name>
...
<location idref="p1"/>
...
</event>
在 XSD 中,我需要将元素的元素链接到 中的相应元素,但到目前为止我还没有正确链接。以下是相关的属性和元素声明:
<-- root element -->
<xs:element name="eventcalendar">
<xs:complexType>
<xs:sequence>
<xs:element ref="tapahtuma" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:attribute name="id" type="xs:ID"/>
<xs:attribute name="idref" type="xs:IDREF"/>
<xs:element name="venueinfo">
<xs:complexType>
<xs:sequence>
<xs:element ref="venue" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="venue">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="address"/>
...
</xs:sequence>
<xs:attribute ref="id" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="location">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute ref="idref" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="event">
<xs:complexType>
<xs:sequence>
<xs:element ref="category"/>
...
<xs:element ref="location"/>
...
</xs:sequence>
</xs:complexType>
</xs:element>
XML 的验证给了我“元素 'venueinfo' 不允许用于内容模型 '(event+)'”。有人可以建议我应该怎么做才能正确地做到这一点吗?非常感谢。
【问题讨论】: