XslTransformer

GUIs für XSL-Transformationen unter Windows mit Microsoft-Mitteln.

Microsoft Windows bietet schon lange mächtige XML-Bibliotheken, die unter anderem XSLT-Prozessoren integriert haben. Das Testen eigener XSLT-Stylesheets unabhängig von aufwändiger Programmierung ist aber nur schwer möglich.

Hier zwei Tools, um das Ganze zu erleichtern. Einmal umgesetzt fürs .NET Framework und einmal mit MSXML 6.0 COM-Objekten (als AutoHotKey-Anwendung, siehe unten)

XslTransformer (.NET)

Ein GUI für XSLT-Transformationen mit der XslCompiledTransform-Klasse des .NET Frameworks

XslTransformer Screenshot

Download / Installation

Features

Berücksichtigt XML-Stylesheet-Deklaration(en) der XML-Eingabedatei
Mehrere Transformationen (XSLT-Stylesheets nacheinander) anwendbar
Pro Stylesheet optional einstellbare XSLT-Parameter
Beim Speichern wird das xsl:output-Element berücksichtigt
Dateiname und Pfad der Ausgabedatei sind nach der Transformation in einem Speicherdialog anpassbar.
Sämtliche Parser- und Transformations-Optionen können direkt im Programm auf der Einstellungs-Seite gesteuert werden.
Das Schreiben der UTF8 Byte Order Mark (BOM) kann in den Einstellungen deaktiviert werden.

Anlass

Nachdem die erste Variante des Tools als AutoHotKey-Script realisiert war, wollte ich tiefer in das Thema Objektorientierte Programmierung einsteigen. Ich bin mit meinen bestehenden PHP-Kenntnissen in diesem Bereich auch nicht ganz glücklich, was AutoHotKey hier zu bieten hat.

Nachdem es nun eine Community-Edition des Visual Studios gibt, habe ich mir darin neben C# gleich noch etwas XAML beigebracht. Sehr angenehm im Vergleich zum Pixelgeschiebe für AHK-GUIs.

XslTransformer (AHK)

Ein GUI für XSLT-Transformationen mit MSXML 6.0

XslTransformer AHK Screenshot

Download

Features

Berücksichtigt XML-Stylesheet-Deklaration(en) der XML-Eingabedatei
Mehrere Transformationen (XSLT-Stylesheets nacheinander) anwendbar
Pro Stylesheet optional einstellbare XSLT-Parameter
Beim Speichern wird das xsl:output-Element berücksichtigt (Dateiendung xml, html oder txt)
Dateiname und Pfad der Ausgabedatei sind nach der Transformation in einem Speicherdialog anpassbar.
Die voreingestellten MSXML-Sicherheitsfeatures können in der INI-Datei der Anwendung (xsl-transformer.ini) deaktiviert werden.

Limits / Bugs

Virenscanner können Fehlalarm geben. Ich habe jetzt die EXE-Dateien nochmal ohne MPRESS kompiliert, dadurch sind die Dateien etwas größer, aber die meisten Fehlalarme sollten jetzt nicht mehr auftreten. Trotzdem können Virenscanner bei kompilierten AutoHotKey-Skripten Alarm schlagen. Alternativ kann man sich auch AutoHotKey installieren und den Quellcode (xsl-transformer.ahk) ausführen.
Beim Speichern wird das encoding-Attribut des xsl:output-Element nicht berücksichtigt. Die Ausgabe wird immer UTF-8-kodiert gespeichert.
Es kann passieren, dass man beim Anordnen von mehreren Stylesheets in der Liste (nach oben / unten) mehrfach auf das entsprechende Symbol klicken muss, damit es sich bewegt.

Anlass

Gar nicht mal so einfach, XSL-Transformationen mit MSXML 6.0 zu testen. Neben Möglichkeiten im Visual Studio gibt es da zwar das Kommandozeilentool MSXSL, aber das ist alt (2004) und kann wohl nur MSXML 4.0. Nun wäre es zwar relativ einfach, ein Kommandozeilentool selbst zu bauen, wie z.B. hier vorgeschlagen, aber so richtig schön ist das auch nicht. Bei vorgeschlagener stackoverflow-Lösung könnten z.B. keine XSLT-Parameter übergeben werden.

Wer die XSL Launch Configuration im eclipse kennt, der wünscht sich ähnliches für MSXML 6.0. Da ich in einem aktuellen Autohotkey-Projekt viel XSLT mit allem Schnick (Parameter, Dokument-Funktion, eingebundene DTDs, mehrere XSLT-Stylesheets nacheinander angewendet) eingesetzt habe, fühlte ich mich berufen, das fehlende GUI (inspiriert von der entsprechenden eclipse XSL Tools Funktion) hiermit nachzureichen.

Der Quellcode möge dem geneigten Programmierer, der ähnliches einsetzen will, auf die Sprünge helfen. Wenn ich mal zuviel Zeit habe, füge ich vielleicht sogar noch Kommentare ein. Autohotkey mag eine etwas exotische Programmiersprache sein, da hier aber mit MSXML Com-Objekten gearbeitet wird, ist das Ganze gut übertragbar, denn Eigenschaften und Methoden dieser Objekte sind auch in anderen Programmiersprachen identisch.