2011-12-07 52 views
1

我對XSL中的變量有疑問。 我對變量概念不太清楚。向現有變量添加新節點XSL

我創建的XSL文件中的變量:

<xsl:variable name="vars"></xsl:variable> 

然後,在每個循環中,每次迭代我想一個節點添加到現有的變量,如

<xsl:for-each select="..."> 
<vars><var>A</var></vars> 
</xsl:for-each> 

應該爲了實現這一目標,我會使用變量? 如果是的話,我該如何添加新節點到現有變量中。

我只能在XSL文件中操作,沒有權限訪問或修改xml,xsd。

謝謝

+0

要增加別人的話,如果你告訴我們你的轉換的輸入和輸出是什麼樣的(如果必要,它們是如何相關的) - 也就是說,如果你描述你的轉換是一個函數 - 那麼我們應該能夠展示如何以非程序方式編碼它。 –

+0

你好邁克爾,我在這裏發佈相關問題http://stackoverflow.com/questions/8424720/for-each-to-xsl-variables-recursions感謝您的幫助。 – Ataman

回答

1

XSLT中的變量是不可變的;他們不能被修改。 (它們也必須在一步中聲明和初始化。)

它幾乎看起來像是在嘗試構建輸出結構。你能直接在循環中輸出結果嗎?如果沒有,你需要重新考慮你的方法。

2

XSLT是一種功能語言。除此之外,這意味着變量一旦被定義是不可改變的(不能更改)。

任何可以用命令式解決方案解決的問題不僅可以在XSLT中解決,而且可以在任何函數式編程語言中解決 - 可能以非常相似的方式解決。在大多數情況下,高效的功能解決方案存在並可以使用

我會極力推薦閱讀一本關於函數式編程的好書 - 一本是「真實世界中的Haskell」。不僅可以作爲一般的興趣,而是因爲在未來XPath 3.0/XSLT 3.0XQuery 3.0功能都是一流的公民(高階函數)和功能,如fold-left()fold-right()map()是標準在XPath 3.0中。

請詳細說明您的問題,許多人將能夠提供XSLT解決方案