XSLT和position()

| 我有
<xsl:for-each select=\"//article[articletype/@id=15 and position() =1]\">
没有任何回落。然后我将其更改为
<xsl:for-each select=\"//article[articletype/@id=15]\">
<p><xsl:value-of select=\"position()\"/></p>
向后拉   1 2 3 4 为什么会这样呢?我什至尝试了2英镑。只有在我使用大量数字而不是我期望的位置时,它才有效
<xsl:for-each select=\"//article[articletype/@id=15 and position() &lt; 100]\">
    
已邀请:
        这个问题简化为:“ 4”是什么意思?答案是,这意味着
/descendant-or-self::node()/child::article[1]
选择文档中每个节点的第一个“文章”子级。这不同于“ 6”,后者选择了文档中的第一篇文章。 所以你想要的表达是
<xsl:for-each select=\"(//article[articletype/@id=15])[1]\">
    
        使用列出的第一个XPath:
//article[articletype/@id=15 and position() =1]
,您要求每个轴(按文档顺序)的第一个
article
元素必须具有
articletype/@id=15
。 对于每个轴,如果第一个“ 9”元素没有带“ 13”的“ 12”元素,则没有匹配项。 在第二个XPath:
//article[articletype/@id=15]
中,您需要所有带有
articletype
子级且具有
@id=15
article
元素。显然,您的文档中有4个。 您应该使用以下XPath:
(//article[articletype/@id=15])[1]
Michael Kay博士的回答更好地解释了为什么这样做。另请参阅Dimitri Novatchev的此答案     
        我认为您需要以下xpath表达式:
<xsl:for-each select=\"//article[articletype/@id=15][1]\">
    

要回复问题请先登录注册