将新节点添加到现有变量XSL

时间:2011-12-07 01:05:05

标签: xml xslt

我对XSL中的变量有疑问。 我不太清楚变量概念。

我在xsl文件中创建一个变量:

<xsl:variable name="vars"></xsl:variable>

然后在for循环中,在每次迭代中,我想将一个节点添加到现有变量,例如

<xsl:for-each select="...">
<vars><var>A</var></vars>
</xsl:for-each>

我应该使用变量来实现这一目标吗? 如果是,我如何向现有变量添加新节点..

我只能在XSL文件中操作,无权访问或修改xml,xsd。

谢谢

2 个答案:

答案 0 :(得分:2)

XSLT是一种功能语言。除其他外,这意味着变量一旦定义为不可变(无法更改)。

使用命令式解决方案可以解决的任何问题不仅可以在XSLT中解决,而且可以在任何函数式编程语言中解决 - 可能以非常类似的方式解决。在大多数情况下,存在并且可以使用有效的功能解决方

我非常推荐阅读一本关于函数式编程的好书 - 一本是“现实世界中的Haskell”。不仅仅是一般兴趣,还因为即将到来的 XPath 3.0 / XSLT 3.0 XQuery 3.0 功能是一等公民(高阶函数)和函数,如 fold-left() fold-right() map() 是XPath 3.0的标准配置。

请准确指出您的问题,许多人将能够提供XSLT解决方案

答案 1 :(得分:1)

XSLT中的变量是不可变的;他们无法修改。 (它们也必须在一个步骤中声明和初始化。)

看起来你似乎正在尝试构建输出结构。你能直接在循环中输出结果吗?如果没有,您需要重新考虑您的方法。