这是对How can I select the first element using XSLT?的跟进。
<xml>
<news>
<newsitem>
<dateCreated>2009-09-09</dateCreated>
<summary>Something great happened</sumamry>
</newsitem>
<newsitem>
<dateCreated>2009-09-08</dateCreated>
<summary>Something bad happened</sumamry>
</newsitem>
</news>
<news>
<newsitem>
<dateCreated>2009-09-07</dateCreated>
<summary>Something really bad happened</sumamry>
</newsitem>
</news>
</xml>
如何匹配文档中的第一个newsitem
元素?在另一个问题中出现的xsl:template match="//newsItem[1]"
匹配将获得第一个孩子。 xsl:template match="(//newsItem)[1]"
无效。我得到的唯一其他提示涉及用键做一些复杂/杂乱的东西,似乎应该有更好的答案,
答案 0 :(得分:0)
如果我理解这个问题,我认为你应该使用:
<xsl:template match="//news[1]/newsitem[1]"> to select the first item of all.
答案 1 :(得分:0)
没有简单的匹配模式可以选择文档中名称newsitem的第一个元素。您可以使用谓词来执行此操作:
match="newsitem[not(preceding::newsitem)]"
但表现可能很糟糕。
使用XSLT 2.0,最佳解决方案是绑定全局变量并对其进行测试:
<xsl:variable name="first-newsitem" select="(//newsitem)[1]"/>
<xsl:template match="newsitem[. is $first-newsitem]"/>
答案 2 :(得分:0)
在XSLT 1.0中,可以使用:
newsitem[not(ancestor::newsitem or preceding::newsitem)]