我正在编辑一个XSLT模板,我的技能有点生疏。
我想写一个条件来查看当前节点是否在其父节点的前三个子节点中。
<parent>
<child>
<child>
<child>
<child>
</parent>
所以上面的前三个子元素将返回true,但是第四个将返回false,这使得子元素不会全部相同并且将拥有自己的后代变得复杂。我确信有一些简单的xpath可以做到这一点。
答案 0 :(得分:20)
这取决于具体情况。如果你在
的中间<xsl:apply-templates select="/parent/child" />
然后检查
<xsl:if test="position() < 4">
会做的。如果您处于其他环境中,但不会影响所有<child>
元素,则position()
将引用 上下文中的位置。
如果您想要无上下文检查,可以使用:
<xsl:if test="count(preceding-sibling::child) < 3">
<!-- or -->
<xsl:if test="count(preceding-sibling::*) < 3">
要选择仅前三个<child>
元素,就可以了:
/parent/child[position() < 4]
答案 1 :(得分:0)
调用position()
函数以确定文档中节点的位置。