我有
<xsl:for-each select="//article[articletype/@id=15 and position() =1]">
Run Code Online (Sandbox Code Playgroud)
什么都没有拉回来.然后我把它改成了
<xsl:for-each select="//article[articletype/@id=15]">
<p><xsl:value-of select="position()"/></p>
Run Code Online (Sandbox Code Playgroud)
它拉回来了
1 2 3 4
出现这种情况的原因是什么?我甚至试过了number(position()).它只有在我使用大数而不是我期望的位置时才有效
<xsl:for-each select="//article[articletype/@id=15 and position() < 100]">
Run Code Online (Sandbox Code Playgroud)
这个问题简化为:什么//article[1]意思?答案是,这意味着
/descendant-or-self::node()/child::article[1]
Run Code Online (Sandbox Code Playgroud)
它选择文档中每个节点的第一个"文章"子项.这与(//article)[1]选择文档中的第一篇文章不同.
所以你想要的表达方式是
<xsl:for-each select="(//article[articletype/@id=15])[1]">
Run Code Online (Sandbox Code Playgroud)