我有一个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。 任何人都可以说出任何理由吗?
答案 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()
答案 1 :(得分:0)
变量不包含您告诉我们它包含的内容。如果不了解如何设置变量,我们无法说明原因。