如何在xslt文件中动态更改<xsl:for-each>的根目录

时间:2015-09-10 07:17:14

标签: html xml xslt xslt-1.0

我想动态更改<xsl:for-each>的根目录。其实我用的是嵌套循环。基于外循环我想改变内循环的根。 为此,我编写了以下代码,但我无法做到。

外循环开始 然后 持有root的变量

<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)的静态值,那么它可以正常工作但是当我将它作为变量传递给root时它不起作用

如何实现同样的目标。任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

在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: Getting started,它将帮助您了解这些语言的其他原则。