<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 :(得分: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 上测试了这些更改,它可以正常工作
(在 Saxon 9 ...... 引擎上,它不起作用,因为&#34;较新的&#34;撒克逊版本没有
支持exsl
)。
您还需要整理源XML:
<xsl:variable>
更改为</xsl:variable>
(结束标记)。<xsl:copy-of select=".">
更改为<xsl:copy-of select="."/>
(添加缺失&#34; /&#34;最后)。要建立您的知识,请阅读node-set
函数。
有时在XSLT 1.0中需要它。
答案 1 :(得分:0)
如果您正在使用Eclipse,那么没有什么可以阻止您前进到XSLT 2.0。安装Saxon,问题就会消失。 XSLT 1.0已有17年历史,并在10年前被取代。在某些环境中,您仍然别无选择,但在Java世界中,您需要向前迈进。