[英]How can I match the first element in the document using XSLT?
這是我如何使用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]"
無效。 我得到的唯一其他提示涉及使用鍵進行一些復雜/混亂的事情,似乎應該有一個更好的答案,
如果我理解這個問題,我認為您應該使用:
<xsl:template match="//news[1]/newsitem[1]"> to select the first item of all.
沒有簡單的匹配模式會選擇文檔中名稱newsitem的第一個元素。 您可以使用謂詞:
match="newsitem[not(preceding::newsitem)]"
但是性能可能會很糟糕。
使用XSLT 2.0最好的解決方案是綁定全局變量並對其進行測試:
<xsl:variable name="first-newsitem" select="(//newsitem)[1]"/>
<xsl:template match="newsitem[. is $first-newsitem]"/>
在XSLT 1.0中,可以使用以下命令 :
newsitem[not(ancestor::newsitem or preceding::newsitem)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.