Re: XSLT mit VB.NET?
From: Marcus Warm (nospam_at_mwvb.de)
Date: 11/24/04
- Next message: Marcus Warm: "Re: Zugriff auf Icon in .res Datei"
- Previous message: Harald Pfitzer: "MDI-Clientfenster sollte größer sein als tatsächliche Bildschirmauflösung"
- In reply to: Thorsten Tarrach: "Re: XSLT mit VB.NET?"
- Next in thread: Thorsten Tarrach: "Re: XSLT mit VB.NET?"
- Reply: Thorsten Tarrach: "Re: XSLT mit VB.NET?"
- Messages sorted by: [ date ] [ thread ]
Date: Wed, 24 Nov 2004 21:38:21 +0100
Ich hab's jetzt hinbekommen. Hier der vollständige VB.NET 2003 Code.
Vielleicht hilft dies hier ja anderen weiter oder andere können den Code
noch optimieren. Eine Compiler-Warnung ist noch drin. Ob's für größere XML
Dokumente schnell funktioniert, habe ich noch nicht ausprobiert.
Gruß
Marcus
[VB.NET Newbie]
'--Anfang--
Imports System.IO
Imports System.Xml
Imports System.Xml.XPath
Imports System.Xml.Xsl
Module Module1
'XSL Transformation
'ob's der beste & schnellste Weg ist ... wer weiß ...
Function transform(ByVal XML As String, ByVal XSL As String) As String
Dim ret As New StringWriter
Dim XSLT As New XslTransform
Dim XSL1 As XmlTextReader
Dim XML1 As XmlTextReader, XML2 As XPathDocument
'aus kurzem XSL-Script ein langes machen
XSL = "<?xml version=""1.0"" encoding=""windows-1252""?>" & _
"<xsl:style*** version=""1.0""
xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"">" & _
XSL & "</xsl:style***>"
'XSL in den Transformator laden
XSL1 = New XmlTextReader(New StringReader(XSL))
XSLT.Load(XSL1) '<- Compiler-Warnung: You should pass evidence to Load()
method
'XML in ein XPathDocument umwandeln
XML1 = New XmlTextReader(New StringReader(XML))
XML2 = New XPathDocument(XML1)
'Transformation durchführen
XSLT.Transform(XML2, Nothing, New XmlTextWriter(ret), Nothing)
'Ergebnis landet in ret
Return ret.ToString
End Function
Sub Main()
Dim XML1 As String, XML2 As String, XSL As String
'Eingabe-XML
XML1 = "<ROWSET ID=""1""><ROW N=""soll BUGSY Elementgruppe
ausgeben""/><ROW N=""Nr. 2""/></ROWSET>"
'verkürztes XSL-Script
XSL = "<xsl:template match=""ROWSET"">"
XSL = XSL & "<xsl:element name=""BUGSY"">"
XSL = XSL & "<xsl:for-each select=""ROW"">"
XSL = XSL & "<xsl:copy-of select="".""/>"
XSL = XSL & "</xsl:for-each>"
XSL = XSL & "</xsl:element>"
XSL = XSL & "</xsl:template>"
'XSL-Transformation
XML2 = transform(XML1, XSL)
'Ausgaben
Console.WriteLine(XML1)
Console.WriteLine("")
Console.WriteLine("Jetzt kommt das Transformationsergebnis:")
Console.WriteLine("")
Console.WriteLine(XML2)
Console.ReadLine()
End Sub
End Module
'--Ende--
- Next message: Marcus Warm: "Re: Zugriff auf Icon in .res Datei"
- Previous message: Harald Pfitzer: "MDI-Clientfenster sollte größer sein als tatsächliche Bildschirmauflösung"
- In reply to: Thorsten Tarrach: "Re: XSLT mit VB.NET?"
- Next in thread: Thorsten Tarrach: "Re: XSLT mit VB.NET?"
- Reply: Thorsten Tarrach: "Re: XSLT mit VB.NET?"
- Messages sorted by: [ date ] [ thread ]