xslt test以查看节点是否是其父节点的前X个子节点之一

时间:2009-08-03 14:34:37

标签: xslt xpath

我正在编辑一个XSLT模板,我的技能有点生疏。

我想写一个条件来查看当前节点是否在其父节点的前三个子节点中。

<parent>
 <child>
 <child>
 <child>
 <child>
</parent>

所以上面的前三个子元素将返回true,但是第四个将返回false,这使得子元素不会全部相同并且将拥有自己的后代变得复杂。我确信有一些简单的xpath可以做到这一点。

2 个答案:

答案 0 :(得分:20)

这取决于具体情况。如果你在

的中间
<xsl:apply-templates select="/parent/child" />

然后检查

<xsl:if test="position() &lt; 4">

会做的。如果您处于其他环境中,但不会影响所有<child>元素,则position()将引用 上下文中的位置。

如果您想要无上下文检查,可以使用:

<xsl:if test="count(preceding-sibling::child) &lt; 3">
<!-- or -->
<xsl:if test="count(preceding-sibling::*) &lt; 3">

选择仅前三个<child>元素,就可以了:

/parent/child[position() &lt; 4]

答案 1 :(得分:0)

调用position()函数以确定文档中节点的位置。