.net XSLT是否有办法保留xml声明?

.net XSLT是否有办法保留xml声明?,.net,xml,excel,xslt,.net,Xml,Excel,Xslt,我有一个将XML转换为XLSX的XSLT。工作簿标记已正确生成。但是问题是,如果Excel在.xlsx的第一行没有,它就无法打开该文件 尝试通过记事本将xml声明手动添加到xlsx,然后Excel可以打开工作簿 我尝试将ommit xml declaration=“no”添加到xslt:output标记中,问题是,浏览器似乎忽略了它,在XLSX xml文件上没有生成xml删除 如果浏览器忽略了省略xml声明属性,我将通过.NET的XSLT库将xml转换为XLSX。NET的最新XSLT库是什么 更

我有一个将XML转换为XLSX的XSLT。工作簿标记已正确生成。但是问题是,如果Excel在.xlsx的第一行没有
,它就无法打开该文件

尝试通过记事本将xml声明手动添加到xlsx,然后Excel可以打开工作簿

我尝试将
ommit xml declaration=“no”
添加到
xslt:output
标记中,问题是,浏览器似乎忽略了它,在XLSX xml文件上没有生成xml删除

如果浏览器忽略了省略xml声明属性,我将通过.NET的XSLT库将xml转换为XLSX。NET的最新XSLT库是什么

更新

这是SQL Server的XML功能生成的XML:

Data.xml:


G
伟大的
活跃的
N
美好的
非常活跃
这是将XML转换为Excel文件的XSLT

Data.xsl:



是的,在执行xslt转换时,浏览器可能只考虑可显示的输出,但您尝试过不同的浏览器吗?@StefanHegny是的,我尝试了所有浏览器,我通过Inspect元素检查了转换后的XML,生成了所有excel标记,即使使用omit XML-
declaration=“否”也缺少XML声明
@Greenletter我不了解您的流程:如何使用浏览器生成转换文件?@michael.hor257k我将此属性添加到XML数据的
中,恐怕我仍然不明白。如果我在浏览器中打开data.xml,我会看到:如果我查看页面源代码,我会看到原始xml。如果我使用“Inspect元素”(在某些浏览器中),我可以看到转换后的XML,但我无法将其保存到文件中。是的,可能在执行xslt转换时,浏览器只考虑了可显示的输出,您是否尝试过不同的浏览器?@StefanHegny是的,我尝试了所有浏览器,我通过Inspect元素检查了转换后的XML,所有excel标记都已生成,XML声明丢失,即使使用省略XML-
declaration=“no”
@GreenLantern我不理解您的过程:如何使用浏览器生成转换文件?@michael.hor257k我将此属性添加到XML数据的
中,恐怕我仍然不明白。如果我在浏览器中打开data.xml,我会看到:如果我查看页面源代码,我会看到原始xml。如果我“检查”元素(在某些浏览器中),我可以看到转换后的XML,但我无法将其保存到文件中。
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="data.xsl"?>
<rows>
  <row>
    <AccountId>G</AccountId>
    <AccountName>Great</AccountName>
    <AcocuntStatus>Active</AcocuntStatus>
  </row>
  <row>
    <AccountId>N</AccountId>
    <AccountName>Nice</AccountName>
    <AcocuntStatus>Very Active</AcocuntStatus>
  </row>
</rows>
<xsl:stylesheet version="1.0"
    xmlns="urn:schemas-microsoft-com:office:spreadsheet"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
 xmlns:msxsl="urn:schemas-microsoft-com:xslt"
 xmlns:user="urn:my-scripts"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" > 

 <xsl:output method="xml" omit-xml-declaration="no"/>

<xsl:template match="/">
  <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
    xmlns:o="urn:schemas-microsoft-com:office:office"
    xmlns:x="urn:schemas-microsoft-com:office:excel"
    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
    xmlns:html="http://www.w3.org/TR/REC-html40">
    <xsl:apply-templates/>
  </Workbook>
</xsl:template>


<xsl:template match="/*">
  <Worksheet>
  <xsl:attribute name="ss:Name">
  <xsl:value-of select="local-name(/*/*)"/>
  </xsl:attribute>
    <Table x:FullColumns="1" x:FullRows="1">
      <Row>
        <xsl:for-each select="*[position() = 1]/*">
          <Cell><Data ss:Type="String">
          <xsl:value-of select="local-name()"/>
          </Data></Cell>
        </xsl:for-each>
      </Row>
      <xsl:apply-templates/>
    </Table>
  </Worksheet>
</xsl:template>


<xsl:template match="/*/*">
  <Row>
    <xsl:apply-templates/>
  </Row>
</xsl:template>


<xsl:template match="/*/*/*">
  <Cell><Data ss:Type="String">
    <xsl:value-of select="."/>
  </Data></Cell>
</xsl:template>


</xsl:stylesheet>