我有一个返回项目名称为xml的存储过程。我在xslt代码中使用它来返回名称。我想把名字放到一个xslt变量中。我试了试像
这样的代码<xsl:variable name="Item"
select="shop:ExecStoredProcedure(
'kt_Item',
concat('@Dcat:',$p//defaultcategory)
)" />
<xsl:variable name="txt1"
select="$Item//TT[@TXT1]"/>
<textarea>
<xsl:value-of select="$txt1"/>
</textarea>
输出XML类似于
<root>
<item>
<Column1>
<TT TXT1="Item3" />
<TT TXT1="Item2" />
<TT TXT1="Item1" />
</Column1>
</item>
</root>
但是在我的代码中,我无法获得名称。有什么问题吗,有人知道吗?
问题似乎是您的ExecStoredProcedure
返回值是从xslt的角度来看的字符串(即使字符串包含XML)。
XSLt-1.0不能将字符串重新解释为XML。根据您的环境(xlst处理器),您可以使用扩展node-set()
来完成此操作。
如果你可以使用这个扩展,你可以尝试这样做:
<xsl:variable name="txt1" select="exsl:node-set($Item)//TT[@TXT1]">