所以,基本上我想做的是模拟模式验证的“ref”属性。我有以下XML,例如:
<node name="parent">
<subordinate name="child3" />
</node>
<node name="child1" />
<node name="child2" />
我希望我的模式将其标记为无效,因为“child3”不是可用的“node”选项之一(未指定)。我有以下架构:
<xs:element name="node" nillable="false">
<xs:complexType>
<xs:attribute ref="name" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="subordinate" nillable="false">
<xs:complexType>
<xs:attribute ref="name" use="required" />
</xs:complexType>
</xs:element>
但我不确定如何指定“subordinate”元素的“name”属性必须来自另一个定义的“node”元素。
感谢您提供任何帮助!
答案 0 :(得分:1)
我不是XSD专家,但我相信您要将node
上的name属性声明为XSD类型ID
,将subordinate
上的name属性声明为IDREF
编辑:添加了参考资料
ID / IDREF数据类型:http://www.w3.org/TR/xmlschema-2/#ID
ID / IDREF验证:http://www.w3.org/TR/xmlschema-1/#cvc-id