从xslt中,你可以输出整个XML吗?

时间:2010-04-16 18:51:09

标签: c# asp.net xml xslt

在我正在转换订单XML的XSLT中,我想转储我目前正在使用的整个XML。我怎么能这样做?

我正在编写一些基于XML的HTML,并希望将整个XML转储到textarea中。

4 个答案:

答案 0 :(得分:8)

可能是最短的......:)

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
  <xsl:copy-of select="."/>
 </xsl:template>
</xsl:stylesheet>

答案 1 :(得分:1)

<?xml version="1.0" encoding="utf-8"?>
<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:output method="xml" indent="yes"/>

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

答案 2 :(得分:1)

所以你想要生成一个<textarea>元素,并将所有转储到那个元素中?

然后你可以使用类似的东西:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:template match="/">
      <textarea>
         <xsl:copy-of select="/" />     
      </textarea>
   </xsl:template>  
</xsl:stylesheet>

小心:输出不会被转义!

或者将<xsl:copy-of>放在您生成textarea的任何地方。

小注意,如果你必须处理非常大的XML文件:如果从模板中调用与层次结构中较深层相匹配的副本,这可能会降低xslt处理器的速度,因为它必须“跳“在本地节点之外。因此,xslt处理器无法使用某些优化。

答案 3 :(得分:1)

<xsl:copy-of select="."/>