tutorial - xslt教學




在嘗試選擇節點時,如何在xsl中使用變量? (2)

你似乎對使用一個變量(這只是$ variable)和屬性值模板(Attribute Value Templates)感到困惑,它允許你將任何XPath表達式放在一些屬性中,例如

<newElement Id="{@Id}"/>

他們顯然可以組合,所以你可以在一個屬性值模板中包含一個變量,比如:

<newElement Id="{$myId}"/>

我原以為這對Google來說是一件容易的事情,但我一直沒有做到。

我想從一個屬性中分配一個變量的值(很容易),然後使用該變量來根據該屬性的值選擇另一個節點。

例:

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id='{@myId}']/@Name />

這是行不通的。 如果我將{@myId}替換為變量中的值,那麼它會找到正確的節點,但以這種方式進行調整不會產生任何結果。 我確定我錯過了一些東西,或者有不同的方式去做。

上下文是在不同的頂級節點下有相同的id值的相關數據,所以我需要在我的模板中得到相關的節點。


好吧,我終於明白了。 愚蠢的問題真的,我只需要把引號和括號分開。 其中一次我以為我已經試過了。 :D哦,我錯誤@myId在第一個例子中,代碼實際上是$ myId。

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id=$myId]/@Name" />