我正在使用XDocument创建一个xml文件,该文件使用xsl文件作为样式表。我想使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()行上得到错误“root级别的数据无效”?我需要注意什么?
答案 0 :(得分: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>