簡體   English   中英

如何使用XSLT匹配文檔中的第一個元素?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM