我正在尝试转换传入的XML,但将原始xml保留在新节点中。
假设正在转换以下XML。
<Document>
<Number>12345</Number>
<Name>Person Name</Name>
</Document>
我想要的输出是:
<Document>
<Number>12345</Number>
<OriginalXml>
<![CDATA[
^^ the above xml ^^
]]
</OriginalXml>
</Document>
我很容易在C#中做过,但开发经理想知道它是否可以在XSLT中使用。
感谢。
答案 0 :(得分:3)
你可以这样做:
XSLT 1.0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/Document">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<OriginalXml>
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
<xsl:copy-of select="."/>
<xsl:text disable-output-escaping="yes">]]></xsl:text>
</OriginalXml>
</xsl:copy>
</xsl:template>
<xsl:template match="Name"/>
</xsl:stylesheet>
<强>输出强>
<Document>
<Number>12345</Number>
<OriginalXml>
<![CDATA[<Document>
<Number>12345</Number>
<Name>Person Name</Name>
</Document>]]>
</OriginalXml>
</Document>