0

我正在使用 XDocument 创建一个使用 xsl 文件作为样式表的 xml 文件。我想让 xml 可下载,我对此没有任何问题,但我遇到的问题是,当我只想下载一个文件时,我有两个文件。

我使用以下内容包含链接:

doc.AddFirst(new XProcessingInstruction("xml-stylesheet", "type='text/xsl' href='Stylesheet.XSL'"));

是否可以将 xsl 文件合并到 XDocument 对象中?

编辑:发现我可以这样做:

XDocument transformedDoc = new XDocument();
        using (XmlWriter writer = transformedDoc.CreateWriter())
        {
            XslCompiledTransform transform = new XslCompiledTransform();
            transform.Load(XmlReader.Create(new StringReader(HttpContext.Current.Server.MapPath("~/XML/CareLog.xsl"))));
            transform.Transform(doc.CreateReader(), writer);
        }
        transformedDoc.Save(HttpContext.Current.Server.MapPath("~/BrowserTemp/CareLog.xml"));

但是我在 transform.Load() 行上收到错误“根级别的数据无效”?我有什么需要注意的吗?

4

1 回答 1

0

直接来自标准......简单示例,但在 XML 中嵌入样式表:http: //www.w3.org/TR/xslt#section-Embedding-Stylesheets

<?xml-stylesheet type="text/xml" href="#style1"?>
<doc>
<head>
<xsl:stylesheet id="style1"
            version="1.0"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="id('foo')">
<fo:block font-weight="bold"><xsl:apply-templates/></fo:block>
</xsl:template>
<xsl:template match="xsl:stylesheet">
 <!-- ignore -->
</xsl:template>
</xsl:stylesheet>
</head>
<body>
<para id="foo">
...
</para>
</body>
</doc>
于 2013-10-09T16:57:33.287 回答