2017-04-14 55 views
0

如何遍歷保存在一個變量在XSLT

<xsl:variable name="result"> 
 
<values> 
 
<value>1</value> 
 
<value>1</value> 
 
<value>1</value> 
 
<value>1</value> 
 
</values> 
 
<xsl:variable> 
 
<xsl:for-each select="$result/values/value"> 
 
<xsl:copy-of select="."> 
 
</xsl:for-each>

當我試着使用結果集爲每個循環在Eclipse的javax解析其拋出的錯誤來遍歷結果集,但它的做工精細在線XSLT工具。如何使它在Eclipse中也可以工作。

回答

0

我想Eclipse使用Xalan(XSLT 1.0),並且在線測試期間,您使用了另一個XSLT引擎,也許是XSLT 2.0。

做以下修改:

  • stylesheet標籤添加xmlns:exsl="http://exslt.org/common"extension-element-prefixes="exsl"(下面將要使用)。
  • 將您的for-each指令更改爲 <xsl:for-each select="exsl:node-set($result)/values/value">

的Xalan引擎測試了這些變化對xslttransform和它的作品 (上撒克遜9 ...發動機不工作,因爲「新」薩克森版本不支持 exsl )。

你也收拾你的源XML:

  • 變化<xsl:variable></xsl:variable>(它是一個關閉標籤)。
  • 更改<xsl:copy-of select="."><xsl:copy-of select="."/> (在末尾添加缺少的「/」)。

要了解您的知識,請閱讀node-set函數。 有時在XSLT 1.0中需要它。

0

如果您使用的是Eclipse,那麼沒有任何東西阻止您前進到XSLT 2.0。安裝撒克遜,問題就會消失。 XSLT 1.0已有17年曆史,並在10年前被取代。有些環境你仍然沒有選擇,但是在Java世界中,是時候向前邁進了。