www.wikidata.de-de.nina.az
XSL Transformation kurz XSLT ist eine Programmiersprache zur Transformation von XML Dokumenten Sie ist Teil der Extensible Stylesheet Language XSL und stellt eine universelle Turing vollstandige 2 Sprache dar XSL TransformationsDateiendung xsl xsltMIME Type application xslt xml 1 Entwickelt von World Wide Web ConsortiumArt Stylesheet SpracheErweitert von XMLStandard s 1 1 Recommendation 2 0 Recommendation 3 0 Recommendation XSLT wurde vom World Wide Web Consortium W3C am 8 Oktober 1999 als Empfehlung veroffentlicht 3 XSLT baut auf der logischen Baumstruktur eines XML Dokumentes auf und dient zur Definition von Umwandlungsregeln XSLT Programme sogenannte XSLT Stylesheets sind dabei selbst nach den Regeln des XML Standards aufgebaut Die Stylesheets werden von spezieller Software den XSLT Prozessoren eingelesen die mit diesen Anweisungen ein oder mehrere XML Dokumente in das gewunschte Ausgabeformat umwandeln XSLT Prozessoren sind auch in vielen modernen Webbrowsern integriert wie zum Beispiel Opera ab Version 9 Firefox und Internet Explorer Version 5 ab Version 6 mit vollstandiger XSLT 1 0 Unterstutzung XSLT ist eine Untermenge von XSL zusammen mit XSL FO und XPath Inhaltsverzeichnis 1 Geschichte 2 Funktionsweise 2 1 Template RulesundConflict Resolution 2 2 Sortierung und bedingte Ausgabe 2 3 Text unverandert ausgeben 3 Anwendungen 4 Alternativen zu XSLT 4 1 DSSSL 4 2 MetaMorphosis 4 3 Template Attribute Language 4 4 Programmiersprachen 5 Abgrenzung zu CSS 6 Code Beispiel 7 XSLT Prozessoren 8 Literatur 9 Weblinks 10 EinzelnachweiseGeschichte BearbeitenUrsprunglich sollte mit XSL eine DSSSL artige Sprache in XML Syntax entstehen Schnell war jedoch klar dass eine solche Sprache eigentlich aus drei interagierenden aber unabhangig voneinander einsetzbaren Teilen besteht Einer Sprache fur die Beschreibung eines Dokuments als Baum mit Formatierungsanweisungen und Stilangaben XSL Formatting Objects XSL FO Einer Sprache fur die Transformation eines beliebigen XML Dokuments in einen anderen Baum z B einen in XSL FO XSLT Einer Sprache fur die Adressierung von Baumbestandteilen XPathDie deklarative funktional applikative Sprache XSLT ist u a aus DSSSL hervorgegangen Entwickelt wurde XSLT ursprunglich von James Clark XSLT 1 0 XSLT 1 1 fur die derzeitige Weiterentwicklung ist Michael Kay verantwortlich Seit dem 23 Januar 2007 ist XSLT 2 0 eine Recommendation Empfehlung des W3C und hat damit die seit 1999 gultige Version XSLT 1 0 abgelost Inzwischen existiert auch eine Version XSLT 3 0 4 als Candidate Recommendation vom November 2015 des W3C welche bereits durch den Saxon Parser unterstutzt wird 5 Funktionsweise Bearbeiten nbsp Vereinfachte Darstellung der Funktionsweise von XSLT Ein XML Dokument wird mittels eines XSLT Dokuments und eines verarbeitenden Prozessors in ein neues Dokument uberfuhrt xml xhtml html txt Die Sprache XSLT beschreibt die Umwandlung eines XML Derivats auch XML Dialekt oder XML Anwendung genannt in Form eines XML Dokuments in ein anderes Dokument Transformation genannt Das resultierende Dokument entspricht meist der XML Syntax es konnen aber auch andere Textdateien und sogar Binardateien erstellt werden Dazu werden die XML Dokumente als logischer Baum betrachtet Die Quellbaume der zu transformierenden Dokumente und die durch die Transformation entstehenden Zielbaume der zu erzeugenden Dokumente Eine Transformation besteht aus einer Reihe von einzelnen Transformationsregeln die Templates deutsch Schablonen heissen Ein Template besitzt ein auf XPath basierendes Pattern deutsch Muster das beschreibt fur welche Knoten es gilt und einen Inhalt der bestimmt wie das Template seinen Teil des Zielbaums erzeugt In einem XSLT Dokument kommen also an Sprachen und XML basierten Technologien mindestens vor XML als Basis fur XSLT 6 XSLT selbst XML basiert XPath XSLT Patterns Die Sprache n des Quell Dokuments XML basiert z B DocBook Die Sprache n des Ziel Dokuments haufig XML basiert z B XML XSLT selbst aber auch HTML oder RELAX NG Text Format auch moglich XML Namespaces zur Unterscheidung der einzelnen verwendeten SprachenSowie ab XSLT 2 0 XML Schema Datentypen XHTMLTemplate RulesundConflict Resolution Bearbeiten Template Rules deutsch Schablonen Regeln werden immer dann angewendet wenn eine bestimmte Bedingung passt Das folgende Beispiel schliesst den Inhalt aller Titel title Tags in em Tags ein egal wo sie im Dokument vorkommen und lasst den Rest unberuhrt lt xsl template match title gt lt em gt lt xsl apply templates gt lt em gt lt xsl template gt span class nt lt xsl apply templates gt span transformiert die Kindelemente des aktuellen Elements mittels samtlicher dafur anwendbarer Regeln Conflict Resolution deutsch Konfliktauflosung wird dann benotigt wenn ein Knoten zu mehreren Template Rules gleichzeitig passt In solchen Fallen gelten die folgenden Regeln Importierte Regeln haben niedrigere Prioritat Wenn ein Attribut priority gegeben ist wird es berucksichtigt Spezifischere Patterns haben hohere Prioritat als weniger spezifische So ist beispielsweise der Test ob irgendein Knoten existiert weniger spezifisch als ein Test fur einen Knoten mit konkretem Namen Wenn es mehrere gleichberechtigte Regeln gibt ist das ein Fehler und wird vom XSLT Parser als Meldung ausgegeben Sortierung und bedingte Ausgabe Bearbeiten Um Elemente zu sortieren kann ein Tag for each mit einem sort kombiniert werden Die Schleife lauft dann nicht in der Reihenfolge der Knoten des Originaldokuments sondern in alphabetischer oder numerischer Reihenfolge Im folgenden Beispiel werden alle Buch Elemente aufsteigend nach ihrem Preis sortiert lt xsl for each select buch gt lt xsl sort select preis order ascending gt lt xsl for each gt Mit oder ohne order ascending ist die Reihenfolge immer die gleiche aufsteigend da dies die Default Einstellung ist Mit order descending erhalt man eine absteigende Reihenfolge XSLT bietet sowohl binare Entscheidungen mittels des Tags if als auch mehrfache Entscheidungen uber das Tag choose Das folgende Beispiel gibt genau dann ein Sternchen aus wenn das Attribut nationality des Elements author den Wert U S hat lt xsl if test author nationality U S gt lt xsl if gt Um mehrere Fallunterscheidungen zu treffen kann die Kombination aus den Tags choose und when verwendet werden lt xsl choose gt lt xsl when test gt lt xsl when gt lt xsl when test gt lt xsl when gt lt xsl when test gt lt xsl when gt lt xsl otherwise gt lt xsl otherwise gt lt xsl choose gt Text unverandert ausgeben Bearbeiten Um durch XSLT beliebigen Text ausgeben zu lassen kann das Tag span class nt lt xsl text gt span verwendet werden wobei das Escaping die Ausgabe von lt und amp als amp lt und amp amp abgeschaltet werden kann Der Inhalt kann als normaler Text oder in einem CDATA Abschnitt stehen Der Vorteil des CDATA Abschnitts besteht darin dass sein Inhalt nicht interpretiert wird er kann also auch XML Syntax enthalten Zum Beispiel erzeugt lt xsl text disable output escaping yes gt lt CDATA Hier darf lt amp gt gt lt beliebiger Text stehen gt lt xsl text gt die Ausgabe Hier darf lt amp gt gt lt beliebiger Text stehen Anwendungen Bearbeiten nbsp XML Sprachen und deren UmfangZwei wichtige Anwendungsgebiete fur XSLT sind POP Presentation Oriented Publishing bezeichnet die Transformation zum Zwecke der Darstellung Mit unterschiedlichen Stylesheets konnen die Daten in XHTML Formatting Objects XSL FO SVG SMIL DocBook und viele andere Formate umgewandelt werden Das Zieldokument muss hierbei nicht zwingend ein XML Dokument sein Das ursprungliche semantische Markup wird dabei durch ein Stil bezogenes Markup ersetzt MOM Message Oriented Middleware bezeichnet die Transformation zum Zwecke des Datenaustausches Da XML lediglich ein Sprachkonzept zur Entwicklung von Sprachen bildet genugt es nicht dass zwei Systeme z B Programme XML beherrschen um gegenseitig Daten austauschen zu konnen Sie mussen die gleiche XML basierte Sprache verwenden In dem haufigen Fall in dem die Systeme nicht die gleiche XML basierte Sprache verwenden wird gerne XSLT eingesetzt um mit Hilfe von Transformationen Ubersetzer von der einen Sprache in die andere zu entwickeln Beispiele fur POP sind etwa Statistische Daten liegen als XML vor z B aus der Datenbank und werden mit Hilfe unterschiedlicher Transformationen aufbereitet als Vektorgrafik in SVG Text Tabelle in XHTML PDF uber den Zwischenschritt XSL FO oder auch Excel Tabelle durch SpreadsheetML ab Office XP Fur eine Website werden die XHTML Dateien oder XML Dateien zunachst ohne Layout geschrieben und erhalten anschliessend das Layout mit Hilfe einer Transformation Der Vorteil ist dabei ahnlich dem eines klassischen CMS Um das Layout zu andern ist es nicht notwendig alle XHTML Seiten zu andern stattdessen andert man das Stylesheet und transformiert neu Beispielsweise verwendet das XML Publishing System Apache Cocoon dieses Verfahren Da moderne Webbrowser XSLT unterstutzen ist es moglich die Quell XML zu publizieren und im letzten Moment mit XSLT auf dem Client Rechner transformieren zu lassen sofern alle zu erwartenden Anwender uber einen solchen Browser verfugen z B in Firmen Netzwerken Andernfalls sollte die Quell XML schon auf dem Server transformiert und das Ergebnis publiziert werden Alternativen zu XSLT BearbeitenDSSSL Bearbeiten Eine mogliche Alternative zu XSLT ist DSSSL das man auch als Vorlaufer von XSLT betrachten kann Der wohl grosste Vorteil von XSLT gegenuber DSSSL ist seine XML basierte Syntax Somit kann jeder XML Editor automatisch auch fur XSLT eingesetzt werden ausserdem gelten die Syntax Regeln von XML Wohlgeformtheit Gultigkeit damit auch fur XSLT Dadurch ist es moglich dass XSLT sich selbst bearbeitet man kann also Transformationen zur Erzeugung und Bearbeitung von Transformationen entwickeln MetaMorphosis Bearbeiten MetaMorphosis ist ebenfalls von DSSSL inspiriert Im Gegensatz zu XSLT ist es ein target driven zielgesteuerter Prozessor Dabei wird der zu erstellende Zielbaum konstruiert Die Regeln beschreiben nicht wie die Eingabedatei verarbeitet werden soll sondern wie die Ausgabedatei konstruiert werden soll Der Prozess beginnt mit einer virtuellen Regel begin mit der der Transformationsprozess beginnt Die Transformationsregeln beschreiben wie die Knoten gefullt werden sollen Dabei werden Abfragen in die Quellbaume wie auch in die bis dahin aufgebauten Zielbaume formuliert Die Abfragesprache ist ein mengenorientierter Ausdruck der alle Eigenschaften der Knoten auslesen und auch setzen kann Erzeugte Knoten konnen nachtraglich beliebig manipuliert werden Weitere Merkmale von MetaMorphosis unterstutzen den industriellen Einsatz flexible Speicherverwaltung fur sehr grosse Dokumente Aufbau von Hilfsdatenstrukturen getindex putindex zum schnellen Zugriff Plugin Architektur API fur C C Java die Moglichkeit dedizierte Frontends und Backend zu implementieren in C wie auch in der MetaMorphosis Skriptsprache Template Attribute Language Bearbeiten Im Rahmen des Anwendungsservers Zope wurde die Template Attribute Language TAL entwickelt TAL Templates sind je nach Ausgabeformat X HTML oder XML Dokumente deren Inhalte durch Attribute dynamisch ersetzt werden konnen und die damit Prototyp und verwendetes Template vereinen Dem Element span class nt lt xsl for each gt span entspricht etwa das Attribut tal repeat als Ausdruckssyntax wird die TAL Expression Syntax verwendet Wenn sich kein HTML oder XML Element als Trager des Attributs anbietet konnen auch span class nt lt tal beliebigerBezeichner gt span Elemente verwendet werden Programmiersprachen Bearbeiten Eine grundsatzliche Alternative zu XSLT besteht in der Moglichkeit solche Transformationen in jeder beliebigen Programmiersprache z B Java C oder Perl abzufassen XSLT kann dabei jedoch bei Einhaltung bestimmter Voraussetzungen eine gewisse Garantie fur wohlgeformte und unter Umstanden sogar gultige Zieldokumente gewahren Es ist auch moglich beides zu koppeln Die eigentliche Transformation geschieht dann per XSLT jedoch werden innerhalb des XSLT Stylesheets selbstdefinierte Funktionen zur Stringmanipulation aufgerufen Das z B in Ruby oder Python geschriebene Programm besteht dann aus diesen selbstdefinierten Funktionen und dem Aufruf einer XSLT Funktion die den Stylesheet und die eigenen Funktionen als Parameter erhalt Abgrenzung zu CSS BearbeitenCSS ist keine Alternative zu XSLT da es sich bei CSS um eine Formatierungssprache handelt CSS beschreibt lediglich wie die Bestandteile eines Baumes akustisch oder visuell zu formatieren sind wahrend XSLT den Baum radikal andern kann oder als Ergebnis Dokumente liefern kann die nicht auf XML basieren So kann man mit XSLT z B automatisch Inhaltsverzeichnisse Indizes Link Listen und komplexe Berechnungen erstellen nicht jedoch mit CSS Mit XSLT ist es zudem moglich Ergebnisse zu erzeugen die CSS als Formatierungssprache verwenden Code Beispiel BearbeitenFolgendes XSLT erzeugt ein einfaches Inhaltsverzeichnis fur eine XHTML Seite mit Uberschriften lt xsl stylesheet version 1 0 xmlns xsl http www w3 org 1999 XSL Transform xmlns html http www w3 org 1999 xhtml xmlns http www w3 org 1999 xhtml exclude result prefixes html gt lt xsl output method xml doctype system http www w3 org TR xhtml11 DTD xhtml11 dtd doctype public W3C DTD XHTML 1 1 EN gt lt xsl template match html body gt lt xsl copy gt lt xsl apply templates select gt lt h1 gt lt xsl apply templates select html title text gt lt h1 gt lt h2 id t o c gt Inhaltsverzeichnis lt h2 gt lt ul gt lt li gt lt a href t o c gt Inhaltsverzeichnis lt a gt lt li gt lt xsl for each select html h2 gt lt li gt lt xsl if test not id gt lt xsl message gt Achtung Kann ohne Id keinen Link erzeugen lt xsl message gt lt xsl if gt lt a href id gt lt xsl apply templates gt lt a gt lt li gt lt xsl for each gt lt ul gt lt xsl apply templates gt lt xsl copy gt lt xsl template gt lt xsl template match node gt lt xsl copy gt lt xsl apply templates select node gt lt xsl copy gt lt xsl template gt lt xsl stylesheet gt Siehe auch XML XSL FO XPathXSLT Prozessoren BearbeitenDie meisten gangigen Webbrowser u a Mozilla Firefox Internet Explorer Google Chrome Opera unterstutzen mittlerweile XSLT Folgend eine Auflistung von weiteren bekannten XSLT fahigen Prozessoren und Bibliotheken Saxon Java und NET nichtvalidierende Variante eingeschrankt frei unterstutzt XSLT 3 0 XPath 3 0 und XQuery 1 1 TransforMiiX C frei Xalan Java Java frei Xalan C C frei libxslt xsltproc C frei XT Java ursprunglich von James Clark frei XSLTengine Java multiplattform nicht frei viele Erweiterungen Sablotron C multiplattform frei Microsoft XML Core Services Windows nicht frei Unicorn XSLT Processor Windows nicht frei nutzliche Zusatzwerkzeuge WebSphere Application Server Feature Pack for XML Erweiterung von WebSphere nicht frei unterstutzt XSLT 2 0 XPath 2 0 und XQuery 1 0 Literatur BearbeitenDoug Tidwell XSLT O Reilly ISBN 3 89721 292 7 englisch Michael Fitzgerald Learning XSLT O Reilly ISBN 0 596 00327 7 englisch Michael Kay XSLT 2 0 Programmer s Reference Wrox Press 2004 ISBN 0 7645 6909 0 englisch Steven Holzner Inside XSLT New Riders 2001 ISBN 0 7357 1136 4 englisch E R Harold W S Means XML in a Nutshell O Reilly ISBN 3 89721 339 7 Frank Bongers XSLT 2 0 Handbuch Galileo Computing 2005 ISBN 3 89842 361 1 Sal Mangano XSLT Kochbuch O Reilly 2006 ISBN 3 89721 457 1 Margit Becher XML DTD XML Schema XPath XQuery XSLT XSL FO SAX DOM W3L Verlag 2009 ISBN 978 3 937137 69 8 Weblinks Bearbeiten nbsp Wikibooks XSLT Lern und Lehrmaterialien XSL Transformations XSLT Version 1 0 Normative Version englisch XSL Transformations XSLT Version 1 0 Memento vom 15 Juni 2006 im Internet Archive nicht offizielle Ubersetzung XSL Transformations XSLT Version 2 0 englisch XSLT Einfuhrung in die Transformationssprache Umfangreiche XSLT Referenz Tutorial zum Thema XSLT XSLT und XPATH Beschreibung SAXON Dokumentation Einfuhrung in XSLT im SELFHTML Wiki XSL FAQ englisch System Xml Xsl Namespace im MSDN Funktionsweise von XSLT englisch Einzelnachweise Bearbeiten w3 org Universal Turing Machine in XSLT Unidex Inc englisch XSL Transformations XSLT Version 1 0 W3C Proposed Recommendation in archive org 8 Oktober 1999 archiviert vom Original am 16 Juni 2006 abgerufen am 12 Februar 2017 englisch XSLT 3 0 Saxon 9 8 product comparison Feature Matrix Amelie Flatt Arne Langner Olof Leps Phase III Generating Artifacts from the Model In Model Driven Development of Akoma Ntoso Application Profiles Springer International Publishing Cham 2022 ISBN 978 3 03114131 7 S 31 37 doi 10 1007 978 3 031 14132 4 5 springer com abgerufen am 7 Januar 2023 Normdaten Sachbegriff GND 4613222 3 lobid OGND AKS V DStandards des World Wide Web Consortiums W3C Empfehlungen ActivityPub ARIA Canonical XML CDF CSS DOM Geolocation API HTML HTML5 InkML ITS JSON LD MathML OWL P3P PLS PNG RDF RDF Schema RIF SCXML SISR SKOS SMIL SOAP SRGS SSML SVG SPARQL Timed Text Turtle VoiceXML WSDL XForms XHTML XHTML RDFa XInclude XLink XML XML Base XML Encryption XML Events XML Information Set XML Namespace XML Schema XML Signature XPath XPointer XProc XQuery XSL XSL FO XSLT Elemente nbsp Arbeitsentwurfeund Kandidaten CCXML CURIE SMIL Timesheets sXBL WICD XFrames XBL XHTML MathML SVG XMLHttpRequestAnmerkungen XAdES XFDL XHTML SMIL XUPRichtlinien Web Content Accessibility Guidelines Multimodal Interaction Activity Markup Validation ServiceInitiativen Web Accessibility Initiative Abgerufen von https de wikipedia org w index php title XSL Transformation amp oldid 229601339