2011-08-11 57 views
0

我是一個新手,XSL編程。你能幫我解決這個問題嗎?

是否有可能結合起來,取出兩個XSL的值:變量 例子:

<xsl:variable name="path1" select="//path1"/> 
<xsl:variable name="path2" select="//path2/value"/> 

然後用它們組合起來:

<xsl:value-of select ="$path1/$path2"/> 

我想通過合併來從路徑1的值從路徑2 結果如果我使用上面的代碼,我得到意外的標記$錯誤

是否有任何其他的選擇嗎?

+0

顯示你的代碼。 –

+0

不,這不是正確的方法。更清楚地描述你想要的東西,也許我們可以找到解決方案。 –

+0

@empo:我想很明顯他想要的東西。 '// path1'的文本值是一些元素名稱(比如'foo'),'// path2/value'的文本值是其他元素名稱(比如'bar'),元素下的第二個名稱給出的元素的名字應該被發現,即他想要找到'foo/bar'(並獲得它的價值)。 –

回答

2

這聽起來像你可能希望做

<xsl:value-of select="concat($path1,$path2)" /> 

值得指出的在這裏,你實際上並沒有存儲這些變量的路徑,但是這些路徑指向的節點。即$path1不含//path1,但無論該節點包含的價值。

如果你其實想文本'//path1//path2/value',那麼你就需要與

<xsl:value-of select="path1" select="'//path1'" /> 
<xsl:value-of select="path2" select="'//path2/value'" /> 

定義路徑變量(請注意多',表示這是一個文本值,而不是一個XPath)。與上述相同的<xsl:value-of聲明將讓在這個情況下,你的'//path1//path2/value'輸出。

如果您確實需要//path1//path2/value節點的內容,這會變得更加棘手,而且更有可能有更好的方式來做您正在嘗試做的任何事情。