你甚至可以避開轉義字符(適當時XML節點CDATA塊!)通過應用以下:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:dt="http://exslt.org/dates-and-times"
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="dt exsl">
<xsl:output method="xml" encoding="utf-8" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="." disable-output-escaping="yes"/>
</xsl:template>
</xsl:stylesheet>
其中,當施加到
<?xml version="1.0" encoding="UTF-8"?>
<mymessage><![CDATA[<xyz>1234</xyz>]]></mymessage>
給出
<?xml version="1.0" encoding="utf-8"?>
<mymessage><xyz>1234</xyz></mymessage>
當然,不建議這樣做(因爲某種原因,CDATA塊被放置在那裏),所以最好不要使用匹配text()的模板。在這種情況下,結果將是
<?xml version="1.0" encoding="utf-8"?>
<mymessage><xyz>1234</xyz></mymessage>
您似乎缺少來自'。無論如何,你爲什麼要這麼做?大多數有此類請求的人往往會碰到破碎的XML解析器(在這種情況下,正確的解決方案是修復解析器)。 –
Quentin
2012-03-14 15:41:02