我有此消息具有CDATA内容。我想把它变成unCDATA格式,例如:
<?xml version="1.0" encoding="UTF-8"?>
<mymessage <![CDATA[<xyz>1234</xyz>]]></mymessage>
turn into
<?xml version="1.0" encoding="UTF-8"?>
<mymessage <xyz>1234</xyz></mymessage>
所以我想摆脱CDATA并将我的消息转换为剥离版本。任何人都知道如何使用xsl来做到这一点?或者可以在xsl中做这样的事情吗?
答案 0 :(得分:1)
默认情况下,符合要求的XSL处理器可以满足您的要求。如果要保留实际必须添加的CDATA部分
<xsl:output cdata-section-elements="mymessage"/>
到样式表
答案 1 :(得分:0)
您甚至可以通过应用以下内容来避免转义字符(当CDATA中的正确xml节点阻塞时!):
<?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块被放置在那里),所以最好省略模板匹配文本()。在这种情况下,结果将是
<?xml version="1.0" encoding="utf-8"?>
<mymessage><xyz>1234</xyz></mymessage>