我已经成功地能够使用 xsl 模板将带有数据的简单 xml 文件转换为另一个 xml 文件(excel 模板),这就是我的 xsl 文件的样子:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" standalone="yes"/>
<xsl:template match="/">
<xsl:processing-instruction name="mso-application">
<xsl:text>progid="Excel.Sheet"</xsl:text>
</xsl:processing-instruction>
...(stuff here)...
</xsl:template>
</xsl:stylesheet>
生成的 xml 文件被正确写出,但除了包括
<?xml version="1.0"?>
在文件的顶部。我怎样才能让它出现在顶部?
目前我生成的 xml 文件以:
<?mso-application progid="Excel.Sheet"?>
...(rest of file)...
但我需要它做的是:
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
.(rest of file)...
我正在使用以下代码通过 Windows 窗体进行此转换:
XPathDocument myXPathDoc = new XPathDocument(xmlfile);
XslCompiledTransform myXslTrans = new XslCompiledTransform();
myXslTrans.Load(xslfile);
XmlTextWriter myWriter = new XmlTextWriter(xmlexcelfile, null);
myWriter.Formatting = Formatting.Indented;
myWriter.Namespaces = true;
myXslTrans.Transform(myXPathDoc, null, myWriter);
myWriter.Close();
我试过玩弄xsl:output standalone="yes/no"
, 和omit-xml-declaration="no"
. 我也尝试过(在 C# 中)myWriter.WriteStartDocument();
在转换之前添加代码,但这是不允许的。我也尝试在网上搜索此内容并不断返回,standalone="yes"
但这不起作用。我在这里缺少什么吗?哦,如果你想知道为什么我需要
<?xml version="1.0"?>
在结果文件的顶部,这是因为使用 excel 打开 xml 文件时,excel 无法正确识别它,但如果包含它,则 excel 会正确打开它...