每个XSL都不起作用

时间:2013-06-20 11:54:04

标签: xml xslt-1.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。 任何人都可以说出任何理由吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

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

另一种可能性是,如果你声明一个像

这样的变量,在XSLT 1.0中
<xsl:variable name="qwe">
  <Column1>
    <TT TXT1="Skriveartikler" />
    <TT TXT1="Kridt" />
    <TT TXT1="Tavlekridt" />
  </Column1>
</xsl:variable>

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

)将RTF转换为节点集

答案 1 :(得分:0)

变量不包含您告诉我们它包含的内容。如果不了解如何设置变量,我们无法说明原因。