我对XSL中的变量有疑问。 我不太清楚变量概念。
我在xsl文件中创建一个变量:
<xsl:variable name="vars"></xsl:variable>
然后在for循环中,在每次迭代中,我想将一个节点添加到现有变量,例如
<xsl:for-each select="...">
<vars><var>A</var></vars>
</xsl:for-each>
我应该使用变量来实现这一目标吗? 如果是,我如何向现有变量添加新节点..
我只能在XSL文件中操作,无权访问或修改xml,xsd。
谢谢
答案 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中的变量是不可变的;他们无法修改。 (它们也必须在一个步骤中声明和初始化。)
看起来你似乎正在尝试构建输出结构。你能直接在循环中输出结果吗?如果没有,您需要重新考虑您的方法。