我有一个C#控制台应用程序,它运行并将以下内容添加到文件中:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<qf:VisualTemplate xmlns:qf="http://www.Qnomy.com/Templates" version="1.0" description="test doc">
<qf:Styles />
<qf:Parameters />
<qf:SampleData />
<qf:Design />
</qf:VisualTemplate>
它使用这段代码来做到这一点:
var doc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement(ns + "VisualTemplate",
new XAttribute(XNamespace.Xmlns + "qf", url),
new XAttribute("version", "1.0"),
new XAttribute("description", "test doc"),
new XElement(ns + "Styles"),
new XElement(ns + "Parameters"),
new XElement(ns + "SampleData"),
new XElement(ns + "Design")
)
);
我还需要在qf:Design节点之间添加一个嵌入的xsl样式表,如下所示:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<qf:VisualTemplate xmlns:qf="http://www.Qnomy.com/Templates" version="1.0" description="test doc">
<qf:Styles />
<qf:Parameters />
<qf:SampleData />
<qf:Design>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
</xsl:stylesheet>
</qf:Design>
</qf:VisualTemplate>
我尝试过这样做,就像创建xml一样,但我不能使用xsl作为命名空间:
var url2 = "http://www.w3.org/1999/XSL/Transform";
var ns2 = XNamespace.Get(url2);
var d = doc.Descendants(ns + "Design").First();
d.AddBeforeSelf(new XComment("Place your HTML elements here"));
d.Add(
new XElement(ns + "Design",
new XElement(ns2 + "stylesheet",
new XAttribute(XNamespace.Xmlns + "xsl", ""),
new XAttribute("version", "1.0")
)
)
);
有没有什么方法可以像我完成XML元素一样用C#添加xsl样式表?
答案 0 :(得分:0)
根据您的预期输出XML,xsl
前缀应该绑定到"http://www.w3.org/1999/XSL/Transform"
,而不是空字符串:
.....
new XElement(ns2 + "stylesheet",
new XAttribute(XNamespace.Xmlns + "xsl", "http://www.w3.org/1999/XSL/Transform"),
new XAttribute("version", "1.0")
)
.....