我正在开发一个导入CSV的visual studio项目,并导出一个XML文件。我希望能够使代码以XML和HTML的形式工作,并在浏览器中查看。我将XML文件加载到浏览器时收到此错误:
火狐
XML解析错误:格式不正确 位置:file:/// C:/Users/fenwky/XmlDoc.xml
第2行,第6列:<?xsl:stylesheet <abc:stylesheet xmlns="http://www.w3.org/1999/XSL/Transform" version="1.0">?>
铬
此页面包含以下错误:第16行第2行的错误:PI名称'xsl:transform'
禁止冒号
这就是我的c#代码在visual studio 2013中的样子:
// Create a procesing instruction.
XmlProcessingInstruction newPI;
// Stylesheet
String PItext = "<abc:stylesheet xmlns:abc=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">";
newPI = doc.CreateProcessingInstruction("abc:stylesheet", PItext);
doc.InsertAfter(newPI, doc.FirstChild);
// Save document
doc.Save(xmlfilename);
答案 0 :(得分:1)
如果您尝试在XML中插入处理指令,CreateProcessingInstruction
方法的data参数在这种情况下不需要包含处理指令的名称。换句话说,你只需要这样做......
var PItext = "xmlns:abc=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\"";
var newPI = doc.CreateProcessingInstruction("abc:stylesheet", PItext);
doc.InsertAfter(newPI, doc.FirstChild);
但是,我想知道为什么要尝试将此特定处理指令添加到XML文档中。也许您的意思是将XML文档链接到单独的XSLT文档,因此如果浏览器读取它将被转换?
如果是这样,你可能需要这样做......
var piText = "type=\"text/xsl\" href=\"style1.xsl\"";
var newPI = doc.CreateProcessingInstruction("xml-stylesheet", piText);
doc.InsertAfter(newPI, doc.FirstChild);
这将向XML写入以下处理指令,然后浏览器可以读取该指令:
<?xml-stylesheet type="text/xsl" href="style1.xsl"?>