XSD 1.1 断言属性必须存在于文档中
XSD 1.1 assert attribute must be present in document
使用 XSD 1.1 是否可以断言某个属性存在于其他地方。
示例:
<root>
<someelement>
<lookup name="test"/>
<bla>
<lookup name="tbl2"/>
<morebla>
<evenmore>
<lookup name="tbl2"/>
</evenmore>
</morebla>
</bla>
</someelement>
<table name="test">
...
</table>
<table name="tbl2">
...
</table>
</root>
我如何断言元素查找具有在 table 元素中使用的名称?
断言需要在根元素上,因为不可能断言元素树,但我如何断言每个查找元素,无论它在文档结构中的什么位置?
请记住,在 XPath 2.0 比较 $s1 = $sequence2
returns 为真当且仅当 $s1
(或其任何元素,如果它是一个序列)存在于 $sequence2
中。所以你可以使用这个简单的 XPath 测试你的断言:
every $lookupName in descendant-or-self::lookup/@name satisfies $lookupName = descendant-or-self::table/@name
使用 XSD 1.1 是否可以断言某个属性存在于其他地方。
示例:
<root>
<someelement>
<lookup name="test"/>
<bla>
<lookup name="tbl2"/>
<morebla>
<evenmore>
<lookup name="tbl2"/>
</evenmore>
</morebla>
</bla>
</someelement>
<table name="test">
...
</table>
<table name="tbl2">
...
</table>
</root>
我如何断言元素查找具有在 table 元素中使用的名称?
断言需要在根元素上,因为不可能断言元素树,但我如何断言每个查找元素,无论它在文档结构中的什么位置?
请记住,在 XPath 2.0 比较 $s1 = $sequence2
returns 为真当且仅当 $s1
(或其任何元素,如果它是一个序列)存在于 $sequence2
中。所以你可以使用这个简单的 XPath 测试你的断言:
every $lookupName in descendant-or-self::lookup/@name satisfies $lookupName = descendant-or-self::table/@name