0

我想将我的 XSLT 样式表附加到我创建的 XML 文档中。

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

XSLT 附加到 XML

我尝试在我的 XML 文档创建器的末尾添加以下代码并收到错误: 无法在指定位置插入节点

'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 文档的第二行中添加我的处理指令,如下所示:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="Fetch.xslt"?>

我一直在尝试重现这个:

http://www.w3schools.com/xsl/xsl_transformation.asp

4

3 回答 3

2

尝试

doc.DocumentElement.PrependChild(doc.CreateProcessingInstruction("xml-stylesheet", "type='text/xsl' href='Fetch.xslt'"))

您不能在文档根目录前添加任何内容。不过,您可以在文档元素中添加一些内容。

于 2013-05-28T15:54:43.773 回答
2

通过尝试添加,您正在与标题节点发生冲突;而不是预先,使用InsertAfter

XmlProcessingInstruction pi = doc.CreateProcessingInstruction("xml-stylesheet", "type='text/xsl' href='Fetch.xslt'");
doc.InsertAfter(pi, doc.FirstChild);
于 2013-05-28T16:03:10.687 回答
1

prepend 不适用于 doc,因为Load它将在 doc 的开头添加一个 xml 声明,我相信你不能在 xml 声明之前放置一个处理指令。

您可能遇到的另一个问题是 rptStatusProd.xml 将被附加到 XmlTextWriter 输出,即在</Table>您获得之后<?xml...- 您可以调用它:

w.WriteProcessingInstruction("xml-stylesheet", "type='text/xsl' href='Fetch.xslt'")

于 2013-05-29T13:13:39.697 回答