2017-04-14 60 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世界中,是时候向前迈进了。