2014-01-18 68 views
0

我有这个XML文件,其中XML节点的内容是字符串中的另一个XML文档。XSLT将节点内的xml字符串转换为xml节点树

<Response> 
    <XML> 
    &lt;Ping&gt; 
     &lt;Success /&gt; 
     &lt;EchoData&gt;Hi, this is a ping!&lt;/EchoData&gt; 
    &lt;/Ping&gt; 
    </XML> 
</Response> 

我需要这样的输出像下面的XML,使用XSLT,但我不知道我怎么能解决这个问题。 我试过一些替换功能,但没有运气。

这是结果,我试图让:

<Ping> 
    <Success /> 
    <EchoData>Hi, this is a ping!</EchoData> 
</Ping> 

这可能吗?

+0

它可能在XSLT 3.0中本地生成,并可能在某些1.0和2.0处理器上使用特定于处理器的扩展功能。你在使用哪种XSLT处理器? –

+1

或者,如果您的处理器支持,则可以探索'disable-output-escaping'。 –

+0

谢谢伊恩,禁用输出转义做的伎俩! :) – bale3

回答

0

像伊恩建议的,我通过将disable-output-escaping添加到value-of来解决此问题。

我的转换现在看起来像这样,并给我我想要的结果。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"> 
    <xsl:template match="/Response"> 
     <xsl:value-of select="XML" disable-output-escaping="yes" /> 
    </xsl:template> 
</xsl:stylesheet> 
+2

您只需要注意禁用输出转义,它只在转换生成序列化输出时才有效 - 例如,不能将转换作为流水线的一部分重用,或者将输出发送到DOM树,例如。 –