无法理解XSLT代码

无法理解XSLT代码,xslt,Xslt,我的一个XSLT中有如下代码- <div> <ul class="toplevel-Video group Video-coll-left"> <xsl:apply-templates select="//VideoNode[@Video='Yes'][1]" /> </ul> <ul class="toplevel-Video group Video-coll"> <xsl:apply-templates select="//V

我的一个XSLT中有如下代码-

<div>
<ul class="toplevel-Video group Video-coll-left">
<xsl:apply-templates select="//VideoNode[@Video='Yes'][1]" />
</ul>
<ul class="toplevel-Video group Video-coll">
<xsl:apply-templates select="//VideoNode[@Video='Yes'][position()>=2 and last()>position()]" />
</ul>
<ul class="toplevel-Video group Video-coll-right">
<xsl:apply-templates select="//VideoNode[@Video='Yes'][last()]" />
</ul>
</div>
无法理解下面代码中[1]的意思

<xsl:apply-templates select="//VideoNode[@Video='Yes'][1]" />

谢谢

它只是指集合中的第一个节点。因此,第一个ul包含第一个元素,中间的ul包含除第一个和最后一个之外的所有节点,最后一个ul包含最后一个节点。

它只是指集合中的第一个节点。因此,第一个ul包含第一个元素,中间的ul包含除第一个和最后一个之外的所有节点,最后一个ul包含最后一个节点。

选择表达式是一个XPATH表达式,表示:

从根或其他任何东西开始// 查找标记名称VideoNode 但只有那些属性Vidoe的值为Yes的 返回第一个这样的节点[1] 现在,[1]部分选择父节点的第一个匹配节点,因此如果您的VideoNode节点有多个父节点,那么结果应该是多个这样的节点

e、 g:

因此[1]是局部的,而不是全局的。

选择表达式是一个XPATH表达式,表示:

从根或其他任何东西开始// 查找标记名称VideoNode 但只有那些属性Vidoe的值为Yes的 返回第一个这样的节点[1] 现在,[1]部分选择父节点的第一个匹配节点,因此如果您的VideoNode节点有多个父节点,那么结果应该是多个这样的节点

e、 g:


因此[1]是局部的,而不是全局的。

在//X[1]和//X[1]之间存在差异。第一个表达式选择作为其父级的第一个X子级的每个X;第二个选择文档中的第一个X。实际上,[]运算符的优先级高于//运算符。更正式地说,//X[1]扩展到根/子代或self::node/child::X[1],而//X[1]扩展到根/子代或self::node/child::X[1]。

在//X[1]和//X[1]之间存在差异。第一个表达式选择作为其父级的第一个X子级的每个X;第二个选择文档中的第一个X。实际上,[]运算符的优先级高于//运算符。更正式地说,//X[1]扩展到根/子代或self::node/child::X[1],而//X[1]扩展到根/子代或self::node/child::X[1]。

但给了我3个VideoNode节点。理想情况下,它应该只提供一个,但提供3个VideoNode节点。理想情况下,它应该只提供一个,但提供3个VideoNode节点。理想情况下,它应该只给出一个我不确定,但我认为这与你的问题有关。也许你不小心选择了错误的节点?但是给了我3个VideoNode节点。理想情况下,它应该只给出一个我不确定,但我认为这与你的问题有关。也许您无意中选择了错误的节点?
<root>
    <parent1>
        <VideoNode Video='Yes'/> <!-- this gets selected -->
        <VideoNode Video='Yes'/>
        <VideoNode Video='Yes'/>
        <VideoNode Video='Yes'/>
        <VideoNode Video='Yes'/>
    </parent1>
    <parent2>
        <VideoNode Video='Yes'/> <!-- and so does this! -->
        <VideoNode Video='Yes'/>
        <VideoNode Video='Yes'/>
    </parent2>
</root>