如何验证xml,以便只有实际存在的元素可以用作属性?

时间:2010-10-05 23:03:42

标签: xml validation xsd schema

所以,基本上我想做的是模拟模式验证的“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”元素。

感谢您提供任何帮助!

1 个答案:

答案 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