XPATH——由查询定义的结果顺序

2024-03-13

我有一个像这样的 xpath 表达式:

element[@attr="a"] | element[@attr="b"] | element[@attr="c"] | …这是一个“或”语句。那么,我是否可以创建一个表达式来保证结果按照查询中的顺序出现,即使元素在文档中以不同的顺序出现?

FE按此顺序的文档片段:

<doc>
    <element attr="c" />
    <element attr="b" />
    <element attr="a" />
    .
    .
    .
</doc>

结果列表排序如下:

[0] <element attr="a" />
[1] <element attr="b" />
[2] <element attr="c" />
.
.
.

The |运算符计算其操作数的并集 http://www.w3.org/TR/xpath/#node-sets使用 XPath 1.0,您只需获得一组节点,顺序是未定义的,尽管大多数 XPath API 然后按文档顺序返回结果,或者允许您说出您想要的顺序或顺序是否重要(例如,参见http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathResult http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathResult).

使用 XPath 2.0,您可以获得按文档顺序排序的节点序列,使用 XPath 2.0,如果您想要子表达式的顺序,则需要使用逗号运算符,而不是联合运算符,即element[@attr="a"] , element[@attr="b"] , element[@attr="c"].

所以对于例如/doc!(element[@attr="a"] , element[@attr="b"] , element[@attr="c"])您可以按照所需的顺序获得元素节点。

.

当然,您也可以对 XPath 3.1 中的元素进行排序,例如

sort(/doc/element, (), function($el) { $el/@attr })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XPATH——由查询定义的结果顺序 的相关文章

随机推荐