我正在编写XML Schema来验证XML文档。
如果一个节点通过将引用节点的id作为ATTRIBUTE引用一个键,我就可以强制执行约束。
<root>
<A>
<as id="1"/>
<as id="2"/>
</A>
<B>
<bs refthisid="1"/>
<bs refthisid="2"/>
<bs refthisid="3"/> /* would give an error during validation */
</B>
</root>
我通过XML Schema中的<xs:key>
和<xs:keyref>
元素执行此操作。像这样:
<xs:key name="some_key">
<xs:selector xpath="root/A/as">
<xs:field xpath="@id"/>
</xs:key>
<xs:keyref name="some_keyref" refer="some_key">
<xs:selector xpath="root/B/bs">
<xs:field xpath="@refthisid"/>
</xs:keyref>
工作正常,但如果refkey是节点的VALUE / TEXT,我该怎么办?像这样:
<root>
<A>
<as id="1"/>
<as id="2"/>
</A>
<B>
<bs>1</bs>
<bs>2</bs>
<bs>3></bs> /* should give an error during validation */
</B>
</root>
我无法弄清楚选择器和字段路径中的内容。 : - (
<xs:keyref name="some_keyref" refer="some_key">
<xs:selector xpath="root/B/bs??????">
<xs:field xpath="??????"/>
</xs:keyref>
或者是一种完全不同的方法吗? XML并不是我的力量,我的在线搜索完全没有可用的建议。 谢谢!