gpt4 book ai didi

ruby - 以与多个选择参数相同的顺序对 XPath 进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 17:40:52 25 4
gpt4 key购买 nike

我有一个 XML 文档如下:

<objects>
<object uid="0" />
<object uid="1" />
<object uid="2" />
</objects>

我可以使用以下查询选择多个元素:

doc.xpath("//object[@uid=2 or @uid=0 or @uid=1]")

但是这会按照它们在 XML 文档中声明的相同顺序返回元素 (uid=0, uid=1, uid=2) 我希望结果的顺序与我执行 XPath 查询时的顺序相同 (uid =2, uid=0, uid=1).

我不确定单独使用 XPath 是否可行,并且研究了 XSLT 排序,但我还没有找到一个示例来解释我如何实现这一点。

我正在使用 Ruby 使用 Nokogiri 库。

最佳答案

在 XPath 1.0 中无法指定所选节点的顺序

XPath 2.0 允许 sequence具有任何特定顺序的节点:

//object[@uid=2], //object[@uid=1]

计算出一个序列,其中所有 @uid=2object 项目在 @uid=1 的所有 object 项目之前

如果没有可用的 XPath 2.0 引擎,仍然可以使用 XSLT 以按任何需要的顺序输出节点。

在此特定情况下以下 XSLT 指令的顺序:

<xsl:copy-of select="//object[@uid=2]"/>

<xsl:copy-of select="//object[@uid=1]"/>

产生所需的输出:

<object uid="2" /><object uid="1" />

关于ruby - 以与多个选择参数相同的顺序对 XPath 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4401774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com