我有一个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>
但是代码执行从来不发生在循环内。表示不打印文本区域。有谁能给出理由吗?
<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()
变量不包含您告诉我们的内容。