2

渡された 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 で実行できるかどうかを確認したいと考えていました。

ありがとう。

4

1 に答える 1

3

次のようなことができます。

XSLT1.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">&lt;![CDATA[</xsl:text>
                <xsl:copy-of select="."/>
                <xsl:text disable-output-escaping="yes">]]&gt;</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>
于 2012-08-01T21:48:26.840 に答える