2014-01-18 159 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樹,例如。 –