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