2015-05-20 83 views
0

陣列I有一個要求,其中i具有從XML的每個塊計算出的值保存到樣可變一個陣列,稍後在我的XSLT代碼中使用此數組值進行比較。如何實現在XSLT 1.0

可以在這個人的幫助,我們如何能夠在陣列的值保存在XSLT 1.0或有任何其他選項來存儲這些值。

謝謝, Mayank

回答

1

有在XSLT沒有數組,必須類型字符串,數字,布爾值和複合數據類型的原始值的節點集在XSLT 1.0 XML節點和結果樹片段的以及XSLT 2.0中的幾個更原始的數據類型以及節點序列和原子項作爲複雜數據類型。

因此,如果要將數據存儲在XSLT 1.0你將其存儲在結果樹片段例如

<xsl:variable name="data-rtf"> 
    <item>a</item> 
    <item>b</item> 
</xsl:variable> 

然後進一步處理它需要使用exsl:node-set或類似如在<xsl:variable name="data" select="exsl:node-set($data-rtf)" xmlns:exsl="http://exslt.org/common"/>具有節點集然後可以訪問例如$data/item[1]$data/item[2]

使用XSLT 2.0,你不需要exsl:node-set或類似的功能,你可以簡單地存儲數據作爲臨時樹(片段),並訪問使用XPath的節點,因此會使用

<xsl:variable name="data"> 
    <item>a</item> 
    <item>b</item> 
</xsl:variable> 

,然後訪問$data/item[1]$data/item[2]

+0

我的要求是,我要計算每個節點的幾個值,並在運行時將這些值存儲到一個變量,並且在我的XSLT後期比較這些值。我的意思是變量「data-rtf」將具有在運行時期間計算並在處理的後期階段中使用的值。我還查找了選項來從結果樹中讀取累加值,但找不到選項。 – user1947768

+0

裏面的'的 ...'你可以使用任何XSLT代碼在運行時填充它。 –