XSLT oder Programmiersprache: Vor- und Nachteile
silversurfer
- xsl
Hallo,
überlege mir gerade, was die Vor- und Nachteile beim Einsatz von XSLT gegenüber der Transformation einer XML-Datei mit Hilfe einer gewöhnlichen Programmiersprache (Java, Perl, C++) sind.
Nur irgendwie fällt mir nichts wirklich gutes ein.
Habt ihr Ideen?
Danke schon mal für eure Beiträge!
Sali,
wenn du Teile suchst, Vor- oder Nach-, dann such dir zuerst konkrete
Praxisfälle. Pauschales Gesabbel ohne reale Beweise ist wenig zielführend.
Was meinst du eigentlich, was genau passiert, wenn du XML Daten mittels
XSLT transformierst? Magie isses nich.
Ciao, Frank
Danke für die nette Antwort.
okay, dann eben präziser:
In welchen speziellen Praxisfällen würde denn XSLT Vorteile gegenüber der Transformation eines XML-Dokuments mit einer gewöhnlichen Programmiersprache haben, in welchen Nachteile?
Fallen dir irgendwelche Beispiele ein?
Hi
In welchen speziellen Praxisfällen würde denn XSLT Vorteile gegenüber der Transformation eines XML-Dokuments mit einer gewöhnlichen Programmiersprache haben, in welchen Nachteile?
Fallen dir irgendwelche Beispiele ein?
Also wenn du nur eine ganz einfache Transformation machen willst, die immer nach einem exakt vorgegebenen Schema abläuft, dann könntest du das eventuell selbst implementieren. Ob dein Code + DOM jedoch schneller/resourcenschondender ist als der XSLT wäre noch zu beweisen.
XSL(T) hat den Vorteil, dass du die Transformationsregeln nicht fest implementierst, sonder jederzeit beliebig ändern kannst. Du kannst auch verschiedene Stylesheets für verschiedene Ausgaben definieren, was IMO viel, viel einfacher ist, als den ganzen Transformator anzupassen.
Mein Bauchgefühl sagt beim Transformieren von XML-Daten automatisch immer XSLT wenn es nicht einen triftigen Grund dagegen gibt. Alles andere artete bei mir immer in üble rekursive Hacks aus.
Gruss Tom2
Hallo,
okay, dann eben präziser:
In welchen speziellen Praxisfällen würde denn XSLT Vorteile gegenüber der Transformation eines XML-Dokuments mit einer gewöhnlichen Programmiersprache haben, [...]?
In jedem Fall.
Warum? Natürlich kann man sich viele Szenerarien ausdenken (z.B. in Verbindung mit AJAX), in denen es dazu kommt, dass XML geparst und daraus Teile dann als HTML dargestellt werden. Das geht bis zu einem gewissen Grad an Komplexität sowohl was das XML als auch was die Ausgabe betrifft.
Ist das XML einfach gestrickt und ist die Ausgabe ebenfalls einfach gestaltet, geht alles auch relativ einfach: die besten Beispiele sind dafür die verschiedene RSS- und Atom-Parser (ob in PHP, Python oder in was auch immer).
Ist aber das XML oder die Ausgabe komplexer, beginnen die Probleme. Da fängt man dann an mit RegExp und/oder mit verzweifelten Rekursionen zu arbeiten, versucht DOM und die nötige Abfragen im Einklang zu bringen und schreibt komplizierte Arrays, wenn es um Funktione wie key() oder um Sortierung geht.
XSLT ist eine sehr mächtige Sprache (und XSLT 2 ist noch um einiges besser geworden) die teils aus Unkenntnis, teils aus Mangel an Technik (bzw. an technischen Können) unterschätzt wird.
Die Frage die sich stellt ist: kann ich XSLT einsetzen? (wie sieht es mit XSLT Untersützung aus, welcher XSLT-Prozessor, wie aufwändig ist es einen Transformationsprozess durchzuführen, etc.)
Wenn der einsatz vom XSLT nicht möglich ist, dann kann man sich überlegen welche Programmiersprache man anwenden könnte.
Grüße
Thomas
Hallo Thomas,
Wenn der einsatz vom XSLT nicht möglich ist, dann kann man sich überlegen welche Programmiersprache man anwenden könnte.
Du solltest durchaus berücksichtigen, dass XSLT eine Programmiersprache ist - nur halt keine imperative Programmiersprache, sondern (IIRC) eine funktionale. 99 Bottles of Beer gibt's ja immerhin auch in XSLT. ;-) Ja, ich weiß, ein Kriterium ist das natürlich nicht. ;-)
D.h. Dein Satz etwas umformuliert: Wenn er Einsatz von XSLT nicht möglich ist, dann kann man sich überlegen, welche <ins>andere</ins> Programmiersprache man anwenden könnte.
Viele Grüße,
Christian
Hallo Christian,
Wenn der einsatz vom XSLT nicht möglich ist, dann kann man sich überlegen welche Programmiersprache man anwenden könnte.
Du solltest durchaus berücksichtigen, dass XSLT eine Programmiersprache ist
Echt? =8-)
- nur halt keine imperative Programmiersprache, sondern (IIRC) eine funktionale. 99 Bottles of Beer gibt's ja immerhin auch in XSLT. ;-) Ja, ich weiß, ein Kriterium ist das natürlich nicht. ;-)
Es gibt "bessere" Beispiele, wie z.B. "The Knights Tour" in XSLT ;-)
D.h. Dein Satz etwas umformuliert: Wenn er Einsatz von XSLT nicht möglich ist, dann kann man sich überlegen, welche <ins>andere</ins> Programmiersprache man anwenden könnte.
So war das ja auch gemeint.
Grüße
Thomas
Hallo silversurfer,
XSLT ist dafür entworfen, XML-Bäume in andere zu überführen. Es ist in imperativen Sprachen (also z.B. den von dir genannten) idR ziemlich umständlich, solche Transformationen zu beschreiben.
Hast Du schon mal versucht, das, was man mit einem etwas trickreicheren XPath-Ausdruck erreichen kann, mit einer anderen Programmiersprache und DOM zu erreichen?
Auch das erzeugen der Ausgabe geht mit XSLT meist wesentlich eleganter, als das mit einer anderen Programmiersprache ginge.
Wenn Du die Transformation von selbst programmierst, musst Du Dir außerdem genau überlegen, wie Du das effizient machst. Ob Du irgendwelche Tabellen mit Element und Attributnamen anlegst, um die dann schneller finden zu können, ob Du irgendwelche Teilergebnisse zwischenspeicherst etc.
Gute XSLT-Prozessoren machen das vermutlich schon. Besonders wenn XSLT selbst übersetzt wird, ist das vermutlich oft auch schneller, als eine naive, händische Implementierung der Transformation.
Grüße
Daniel