【问题标题】:How to change the root of <xsl:for-each > dynamically in xslt file如何在 xslt 文件中动态更改 <xsl:for-each > 的根
【发布时间】:2015-09-10 07:17:14
【问题描述】:

我想动态更改&lt;xsl:for-each&gt; 的根。实际上我使用了嵌套循环。基于外循环我想改变内循环的根。 为此,我编写了以下代码,但我无法做到。

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

<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 中的变量传递时,它就不能工作

怎样才能达到同样的效果。谁能帮帮我。

【问题讨论】:

  • 请提供完整的 XSLT 以及输入和预期输出。问题解释不够清楚。
  • 您是否希望变量 cdtitle 包含表达式 "/root/Data/AppNameEncrpt",而不是表达式的求值结果?

标签: html xml xslt xslt-1.0


【解决方案1】:

在 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,它会帮助你理解语言的这些和其他原则。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    相关资源
    最近更新 更多