需要一個我可以從任何模板訪問的變量。文件作用域變量
我在總是調用的文件開始處有一個全局模板。我希望能夠在運行apply-templates時調用的模板中訪問此變量。
這可能嗎?
謝謝!
編輯:這是我的問題的一個很好的總結。我有各種各樣的模板被調用(以各種順序)。他們把表單控件放在頁面上。我希望通過使用索引來引用XML中的一組數據。每次我點擊其中一個模板並打算創建一個論壇控件時,我希望能夠使用這個「全局」變量作爲計數器。
需要一個我可以從任何模板訪問的變量。文件作用域變量
我在總是調用的文件開始處有一個全局模板。我希望能夠在運行apply-templates時調用的模板中訪問此變量。
這可能嗎?
謝謝!
編輯:這是我的問題的一個很好的總結。我有各種各樣的模板被調用(以各種順序)。他們把表單控件放在頁面上。我希望通過使用索引來引用XML中的一組數據。每次我點擊其中一個模板並打算創建一個論壇控件時,我希望能夠使用這個「全局」變量作爲計數器。
需要一個變量我可以從任何模板 訪問。
XSLT語言提供了global variables(稱爲頂級變量)。
每個<xsl:variable>
,它是<xsl:stylesheet>
的孩子是全局的,可以從任何模板或從完整導入樹中的任何其他全局變量訪問。
這是一個小例子。這種轉變:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:variable name="vMyVar" select="3"/>
<xsl:template match="/">
From template matching '/': "<xsl:text/>
<xsl:value-of select="$vMyVar"/>"
<xsl:call-template name="template2"/>
</xsl:template>
<xsl:template name="template2">
From template2: "<xsl:text/>
<xsl:value-of select="$vMyVar"/>"
</xsl:template>
</xsl:stylesheet>
當應用於任何XML文檔(未使用),會產生這樣的結果:
From template matching '/': "3"
From template2: "3"
如果變量的值是在轉型過程中保持恆定,可以使它通過將其放在輸入模板之外而成爲一個全局變量。
如果變量在不同的時間有不同的值,那麼您需要使用在調用模板中設置並用於調用模板的參數。 (在XSLT 2.0中,您可以使用隧道參數:如果這些參數在條目模板中設置,那麼它們可以在任何地方使用,而不必通過所有中間模板調用顯式傳遞)。
作爲一般原則,當你沒有描述你的問題時,很難告訴你,只有一個建議的解決方案 - 你在XSLT中的經驗水平是這樣的,你試圖實現的解決方案可能不是最合適的一個。
這聽起來像是你將XSLT與各種其他編程語言混淆了。 – 2011-02-08 01:39:41
編輯您的帖子並顯示您的XSLT示例,指出「全局模板」的含義以及與「變量」相關的方式。 – 2011-02-08 04:04:05