xml - 如何用XPath获取某个条件对应的TOP N元素

标签 xml xpath top-n

我有一个像这样的 XML

<root>
<el id="1" value="3"/>
<el id="2" value="3"/>
<el id="3" value="4"/>
<el id="4" value="4"/>
<el id="5" value="4"/>
<el id="6" value="4"/>
</root>

我想用一个 xpath(我在 c# 上下文中而不是 xslt 模板中)获取值为 4 的第 2 个元素,即

<el id="3" value="4"/>
<el id="4" value="4"/>

/root/el[position() <= 2 and @value=4]我会得到 0 个元素,因为position() 基于父节点,而不是当前子集。

我可以在 C# 中做到这一点,但当我只需要 20 个节点时,加载 1200 个节点似乎毫无用处。

谢谢

最佳答案

以下内容在 XSLT 脚本中适用于我;

  <xsl:template match="/">
    <xsl:apply-templates select="/root/el[@value=4][position()&lt;=2]" />
  </xsl:template>

结果是 id 3 和 4,因此 XPATH /root/el[@value=4][position()<=2] 应该适合您。

关于xml - 如何用XPath获取某个条件对应的TOP N元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5899372/

相关文章:

RS Selenium : replacing xpath with variable in R

sql - 在 Oracle 中选择组的前 n 个元素

xml - 什么是 Oracle native Web 服务?

Python:循环遍历 xmltodict 创建的所有嵌套键值对

xslt - 表达式中的XPath相对路径

xml - XQuery中是否有一个xsl:for-each-group等效项?

XML 到 Excel 映射

java - 需要不同的父子命名空间前缀

r - Tidyverse : filtering n largest groups in grouped dataframe

MySQL 查询基于多个列值选择顶级相机选项