检查一组节点是否彼此相等 XPath 1.0
Check If Set of Nodes are Equal to Each Other XPath 1.0
我想使用 XPath select 一些以相同单词结尾的节点,并检查它们是否都相等。所以,例如,
<a>
<b-token>123456789</b-token>
...
<c>
<d>
<d-token>123456789</d-token>
...
</d>
<e>
<e-token>123456789</e-token>
...
</e>
<f>
<f-token>123456789</f-token>
...
</f>
<c>
</a>
所以,我想搜索所有以“-token”结尾的节点,并确保它们是等价的。这可以在 XPath 1.0 中完成吗? 2.0? XSD?
这是一个 XPath 示例,我认为它可以工作,但它没有
String xpathExpression = "/descendant-or-self::node()/*[substring(name(), string-length(name() ) - (string-length('token')-1) ) = 'token'] = /descendant-or-self::node()/*[substring(name(), string-length(name() ) - (string-length('token')-1) ) = 'token']";
当我像这样在“=”之后放置一个特定值时,它会起作用:
String xpathExpression = "/descendant-or-self::node()/*[substring(name(), string-length(name() ) - (string-length('token')-1) ) = 'token'] = '123456789'";
如果重要的话,我正在使用 Java7。
谢谢
如果您使用 not(//*[substring(local-name(), string-length(local-name()) - 5) = '-token'] != //*[substring(local-name(), string-length(local-name()) - 5) = '-token'])
,那么只要所有这些元素都具有相同的字符串值,则比较结果为 true,如果至少有一个元素的字符串内容不相等,则比较结果为 false。
我想使用 XPath select 一些以相同单词结尾的节点,并检查它们是否都相等。所以,例如,
<a>
<b-token>123456789</b-token>
...
<c>
<d>
<d-token>123456789</d-token>
...
</d>
<e>
<e-token>123456789</e-token>
...
</e>
<f>
<f-token>123456789</f-token>
...
</f>
<c>
</a>
所以,我想搜索所有以“-token”结尾的节点,并确保它们是等价的。这可以在 XPath 1.0 中完成吗? 2.0? XSD?
这是一个 XPath 示例,我认为它可以工作,但它没有
String xpathExpression = "/descendant-or-self::node()/*[substring(name(), string-length(name() ) - (string-length('token')-1) ) = 'token'] = /descendant-or-self::node()/*[substring(name(), string-length(name() ) - (string-length('token')-1) ) = 'token']";
当我像这样在“=”之后放置一个特定值时,它会起作用:
String xpathExpression = "/descendant-or-self::node()/*[substring(name(), string-length(name() ) - (string-length('token')-1) ) = 'token'] = '123456789'";
如果重要的话,我正在使用 Java7。
谢谢
如果您使用 not(//*[substring(local-name(), string-length(local-name()) - 5) = '-token'] != //*[substring(local-name(), string-length(local-name()) - 5) = '-token'])
,那么只要所有这些元素都具有相同的字符串值,则比较结果为 true,如果至少有一个元素的字符串内容不相等,则比较结果为 false。