也许我的答案来得太晚了,但无论如何我都会给出答案。我遇到了同样的问题,找不到易于使用的答案,所以我自己编写了一个模板“STR2XML”来做这件事。如果有人有兴趣,我很乐意分享模板。让我知道。
其工作原理的两个示例:
<xsl:variable name="text">
<![CDATA[
<div style="color:red;">
<p>hello world</p>
</div>
]]>
</xsl:variable>
<p>
<xsl:value-of select="$text"/>
</p>
<xsl:call-template name="str2xml">
<xsl:with-param name="text" select="$text"/>
</xsl:call-template>
将给出以下输出:
<div style="font-weight:bold;"> <p>hello world</p> </div> (non parsed plain text)
你好世界
但是当然你也可以使用它来创建一个可以作为节点访问的变量:
<xsl:variable name="text2">
<![CDATA[
<div>hello world</div>
<p>goodbye world</p>
]]>
</xsl:variable>
<xsl:variable name="var1">
<xsl:call-template name="str2xml">
<xsl:with-param name="text" select="$text2"/>
</xsl:call-template>
</xsl:variable>
<xsl:for-each select="xalan:nodeset($var1)/*">
<p>
<xsl:value-of select="concat(name(.),': ',.)"/>
</p>
</xsl:for-each>
输出:
div:你好世界
p:再见世界