我想将我的XSLT样式表附加到我创建的XML文档中。
使用以下代码创建XML文档:
Private Sub CreateXML(ByVal ds1 As StatusProd.dsAssemblies, ByVal ReportName As String)
ReportName = ReportName.Replace(".rdlc", "")
Dim w As New XmlTextWriter(ReportName & ".xml", System.Text.Encoding.UTF8)
w.WriteStartDocument(True) 'Start document
w.Formatting = Formatting.Indented
w.Indentation = 2
w.WriteStartElement("Table") 'Start table
For Each row As DataRow In ds1.Tables(0).Rows
w.WriteStartElement("Assemblies")
w.WriteStartElement("MachineNo")
w.WriteString(row(0))
w.WriteEndElement()
w.WriteStartElement("Description")
w.WriteString(row(1))
w.WriteEndElement()
w.WriteStartElement("Client")
w.WriteString(row(2))
w.WriteEndElement()
w.WriteStartElement("DateTransfer")
w.WriteString(row(4))
w.WriteEndElement()
w.WriteEndElement()
Next
w.WriteEndElement() 'End table
w.WriteEndDocument() 'End document
w.Close()
End Sub
我尝试在XML Document创建者的末尾添加以下代码并收到错误:无法在指定位置插入节点。
'Append XSL to XML
Dim doc As New XmlDocument
doc.Load("rptStatusProd.xml")
doc.PrependChild(doc.CreateProcessingInstruction("xml-stylesheet", "type='text/xsl' href='Fetch.xslt'"))
doc.Save(w)
我想在我的XML文档的第二行添加我的处理指令,如下所示:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="Fetch.xslt"?>
我一直试图重现这个:
答案 0 :(得分:2)
尝试
doc.DocumentElement.PrependChild(doc.CreateProcessingInstruction("xml-stylesheet", "type='text/xsl' href='Fetch.xslt'"))
您不能在文档根目录前添加任何内容。您可以在文档元素之前添加一些内容。
答案 1 :(得分:2)
通过尝试前置,您将与标头节点发生冲突;而不是预先使用InsertAfter
:
XmlProcessingInstruction pi = doc.CreateProcessingInstruction("xml-stylesheet", "type='text/xsl' href='Fetch.xslt'");
doc.InsertAfter(pi, doc.FirstChild);
答案 2 :(得分:1)
prepend不适用于doc,因为Load
会在doc的开头添加一个xml声明,我相信你不能在xml声明之前放一个处理指令。
您可能遇到的另一个问题是rptStatusProd.xml将附加到XmlTextWriter输出,即</Table>
之后您将获得<?xml...
- 您可以这样称呼:
w.WriteProcessingInstruction("xml-stylesheet", "type='text/xsl' href='Fetch.xslt'")