我也试着在xsl中手动追加,如:
<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
  <xsl:output method="xml"/> 
  <xsl:template match="/">
    <xsl:text disable-output-escaping="yes">&lt;?xml version="1.0" encoding="utf-8"?&gt;</xsl:text>
    ……
并且尝试disable-output-escaping的不同值yes or no。但是在转换的文件中都是输出&lt;?xml version="1.0" encoding="utf-8"?&gt;,造成xml格式不正确。还有其他追加方法吗?

解决方案 »

  1.   

    楼主的结贴率,汗一个。把<xsl:output method="xml" />
    改成:<xsl:output method="xml" encoding="utf-8" indent="yes"  />试下。没时间,就不帮你测了。
      

  2.   

    试了fcuandy的方法,还是显示不出xml声明。我的结贴率低源于我的发帖数:)
      

  3.   

    把相关的内容(声明)加上去行不行?
    这是fcuandy的文章.
    SQLServer2005 XML在T-SQL查询中的典型应用
    http://topic.csdn.net/u/20081107/17/68aaf5a9-c596-4ab5-ae18-f3370b2ab35b.html
      

  4.   

    本帖最后由 fcuandy 于 2009-01-23 10:47:07 编辑
      

  5.   

    我刚在一台新安装SQL Server 2005的服务器上进行了简单测试。当选择默认格式“具有报表数据的XML文件”进行导出时,是具有xml声明的。但是在应用了xsl之后,就没有了。即使xsl文件内容是VS自动生成的,最简易的也不行。
    <?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>
      

  6.   

    其实我原本的想法是增加一个Reporting Services的呈现扩展插件,即一个进行过xsl转换的xml导出项。不过也遇到了问题:(前天发帖,不过沉了……http://topic.csdn.net/u/20090121/11/6c91092a-5bdc-4d2c-a36f-b5bcc2c1bfc2.html