0

我有一个 XSL 变量qwe,其中包含这样的 xml

 <Column1>
  <TT TXT1="Skriveartikler" />
  <TT TXT1="Kridt" />
  <TT TXT1="Tavlekridt" />
</Column1>

我的for循环是这样的

         <xsl:for-each select="$qwe/Column1/TT">
            <textarea>
              <xsl:value-of select="."/>
            </textarea>
        </xsl:for-each>

但是代码执行永远不会在循环内部发生。意味着没有打印 texarea。任何人都可以给出任何理由吗?

4

2 回答 2

2
<xsl:value-of select="."/>

将为您提供元素的字符串值TT,即示例中的空字符串。如果要显示Skriveartikler等文本,则需要

<xsl:value-of select="@TXT1" />

如果您根本没有得到<textarea>元素,那么大概您的变量不包含您期望的内容。您在问题中给出的Column1XML 是从具有默认命名空间声明 ( xmlns="...") 的较大文档中选择的片段吗?如果是这样,您需要将命名空间绑定到样式表中的前缀并在 XPaths 中使用该前缀。

另一种可能性是,在 XSLT 1.0 中,如果您声明一个变量,例如

<xsl:variable name="qwe">
  <Column1>
    <TT TXT1="Skriveartikler" />
    <TT TXT1="Kridt" />
    <TT TXT1="Tavlekridt" />
  </Column1>
</xsl:variable>

那么该变量将包含一个结果树片段,而不是一个节点集,并且您可以使用 RTF 做的唯一事情是将其复制到输出树 - 您无法使用 XPath 表达式导航到它。如果要执行此操作,则需要使用扩展函数将 RTF 转换为节点集,例如exslt:node-set()

于 2013-06-20T12:38:51.667 回答
0

该变量不包含您告诉我们它包含的内容。如果没有看到您如何设置变量,我们无法说出原因。

于 2013-06-20T13:17:41.797 回答