我有一个像这样的 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()<=2]" />
</xsl:template>
结果是 id 3 和 4,因此 XPATH /root/el[@value=4][position()<=2]
应该适合您。
关于xml - 如何用XPath获取某个条件对应的TOP N元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5899372/