2014-02-23 54 views
0

我想爲每個選擇提供一個動態名稱,並且似乎無法使其工作。XSLT在每個選擇中使用變量

我的模板旨在允許傳入特定的標籤名稱,然後從xml中選擇這些節點並用於處理。

<xsl:param name="tagName" select="'DefaultTag'" /> 

<xsl:variable name="DataSource" select="document('../xml/datasource.xml')"/> 

<xsl:template name="ProcessData"> 
    <xsl:for-each select="$DataSource//$tagName/DataValue" > 

     ... Data operations here ... 

    </xsl:for-each> 
</xsl:template> 

如果我將for-each select中的$ tagName替換爲一個硬編碼的值,那麼它可以工作(對於該值)。

如何使用參數值得到變量替換值?

感謝, 丹尼斯

+0

如果您只是刪除'DefaultTag'周圍的單引號,會發生什麼?否則,請發佈完整的XSLT樣式表,以便人們可以測試自己。 –

+0

你是如何設置參數的? – keshlam

回答

4

不能使用變量這樣的XPath中生成「動態」的表述,但在這種情況下,可變部分僅僅是一個單一的元素名稱,以便您可以過濾使用謂詞:

$DataSource//*[local-name() = $tagName]/DataValue 
+0

完美!就是這樣。我知道必須有一種方式... 謝謝! –

+0

@ DennisButtery請接受此答案(在左側標記打勾,使其顯示爲綠色)。這是Stackoverflow的常見做法。 –

+0

對不起......我現在這樣做了。有點還是一個Stackoverflow的新手... –