我的结构如下:
<parent>
<name>p1</name>
<child>
<name>c3</name>
<name>c1</name>
</child>
</parent>
<parent>
<name>p2</name>
<child>
<name>c1</name>
<name>c2</name>
</child>
</parent>
我想要的是另一部分应该在第一部分重新验证哪些值。那么
<parent name="p1">
<child name="c3" />
</parent>
或
<parent name="p2">
<child name="c2" />
</parent>
应该有效,但不是
<parent name="p1">
<child name="c2" />
</parent>
,也不
<parent name="p2">
<child name="c4" />
</parent>
我在考虑使用具有多个字段的密钥
<xs:key name="k">
<xs:selector xpath="tns:parent" />
<xs:field xpath="tns:name" />
<xs:field xpath="tns:child/tns:name" />
</xs:key>
但似乎这种方法永远不会起作用,因为关键字段应该是唯一的。
是否可以使用XML Schema 1.0执行此操作?
答案 0 :(得分:1)
正确,child/name
定义中的多个parent
元素是问题所在。太糟糕的XML Schema doesn't allow XPath parent steps,因为您可以选择子名称:
<xs:key name="pcdef">
<xs:selector xpath=".//tns:parent/tns:child/tns:name"/>
<xs:field xpath="../../tns:name" />
<xs:field xpath="." />
</xs:key>