我想动态更改<xsl:for-each>
的根。实际上我用的是嵌套循环。基于外循环,我想改变内循环的根。为此,我编写了以下代码,但我无法做到。
外循环开始然后保存根
的变量<xsl:variable name="cdtitle">
<xsl:value-of select="/root/Data/AppNameEncrpt"/>
</xsl:variable>
inner loop
<xsl:for-each select="msxsl:node-set($cdtitle)">
..
</xsl:for-each>
如果我传递msxsl:node-set($cdtitle)
的静态值,那么它就可以工作但是当我将它作为一个变量在根中传递时,它不能工作
怎样才能达到同样的效果。谁能帮我一下?
在XSLT中(与任何函数式语言一样),变量是不可变的。然而,在"循环"(从技术上讲不是循环)中,您可以将变量设置为该循环上下文中的任何内容。由于您没有显示任何输入XML,我猜您想要实现什么,但总有一种(简单的)方法。
假设你有这样一个变量:
<xsl:variable name="cdtitles" select="/data/cds/title" />
它将保存所有cd标题。现在我可以输入:
<xsl:for-each select="$cdtitles">
<xsl:variable name="cdtitle" select="." />
<!-- do something with the title, var changes with each title -->
</xsl:for-each>
看一下XSLT:入门,它将帮助您理解该语言的这些原则和其他原则。