【发布时间】:2016-04-23 15:00:40
【问题描述】:
我对 XSD 架构感到困惑。我想设置一个限制,即节点中只有一个元素可以具有 cetrain 属性并且不影响另一个元素。
给你一个有效和无效的 XML 文件的例子会更好:
有效的 XML
标签someone 必须包含@id 属性,但只有一个标签具有@status 属性和captain 值。
<node>
<someone id="01">Alex</someone>
<someone id="02">Amanda</someone>
<someone id="03" status="captain">Bob</someone>
<someone id="04">Costa</someone>
</node>
无效的 XML
以下无效。 @status 不可能有两个。
<node>
<someone id="01" status="captain">Alex</someone>
<someone id="02">Amanda</someone>
<someone id="03" status="captain">Bob</someone>
<someone id="04">Costa</someone>
</node>
也不能跳过@id。
<node>
<someone status="captain">Alex</someone>
<someone id="01">Amanda</someone>
<someone id="02">Costa</someone>
</node>
我的实际 XSD
到目前为止,我有以下 xsd 文件,但是我不知道如何应用上述限制。
<xsd:complexType name="nodeType">
<xsd:sequence>
<xsd:element name="someone" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="id" type="idType" use="required"/>
</xsd:complexType>
感谢您的帮助。我认为使用schematron 的方式会更好、更轻松地完成工作,但是我对此的经验非常少。
【问题讨论】:
标签: schematron xml xsd attributes schematron