XSLT

Xslt
Paradigma Deklarativ
Entwickler World Wide Web Konsortium (W3C)
Erstmals erschienen 1998
Stabile Version
3.0 / 8. Juni 2017; vor 5 Jahren
Dateiname -Erweiterungen .xslt
Webseite www.W3.org/Tr/xslt-30/
Haupt Implementierungen
libxslt, Sachsen, Xalan
Beeinflusst von
DSSSL

Xslt (Erweiterbare Stylesheet -Sprachtransformationen) ist eine Sprache für Transformation Xml Dokumente in andere XML -Dokumente,[1] oder andere Formate wie z. Html zum Webseiten, einfacher Text oder XSL -Objekte formatieren, was anschließend in andere Formate umgewandelt werden kann, wie z. PDF, PostScript und Png.[2] XSLT 1.0 wird in modernen Webbrowsern häufig unterstützt.[3]

Das Originaldokument wird nicht geändert; Vielmehr wird ein neues Dokument basierend auf dem Inhalt eines vorhandenen erstellt.[4] In der Regel handelt es sich XQuery- und XPath -Datenmodell kann verwendet werden, wie z. relationale Datenbank Tische oder Geografische Informationssysteme.[1]

Obwohl XSLT als Spezialsprache für die XML-Transformation konzipiert ist, ist die Sprache Turing-Completetheoretisch fähig zu willkürlichen Berechnungen.[5]

Geschichte

XSLT wird von beeinflusst von Funktionssprachen,[6] und durch textbasierte Musteranpassungssprachen wie Snobol und Awk. Der direkteste Vorgänger ist DSSSL, was für SGML Was XSLT für XML tut.[7]

  • XSLT 1.0: XSLT war Teil der World Wide Web Konsortium (W3C) 's Erweiterbare Stylesheet -Sprache (XSL) Entwicklungsbemühungen von 1998–1999, einem Projekt, das ebenfalls produziert wurde Xsl-fo und XPath. Einige Mitglieder des Standardausschusses, die XSLT entwickelten, einschließlich James ClarkDer Herausgeber hatte zuvor an DSSL gearbeitet. XSLT 1.0 wurde als a veröffentlicht W3C -Empfehlung Im November 1999.[8] Trotz seines Alters XSLT 1.0[9] wird noch weit verbreitet (ab 2018), da spätere Versionen nicht nativ unterstützt werden Internetbrowser oder für Umgebungen wie LAMPE.
  • XSLT 2.0: Nach einem unortiven Versuch, eine Version 1.1 im Jahr 2001 zu erstellen,[10] Die XSL -Arbeitsgruppe hat sich mit der zusammengetan XQuery Arbeitsgruppe zu erstellen XPath 2.0,[11] mit einem reichhaltigeren Datenmodell und Typsystem basierend auf XML -Schema. Darauf bauen XSLT 2.0,[12] entwickelt unter der Redaktion von Michael Kay, der im Januar 2007 den Empfehlungsstatus erreichte.[13] Die wichtigsten Innovationen in XSLT 2.0 sind:
    • String Manipulation Verwenden Reguläre Ausdrücke
    • Funktionen und Operatoren zum Manipulieren von Daten, Zeiten und Dauern
    • Mehrere Ausgabedokumente
    • Gruppierung (Erstellung einer hierarchischen Struktur aus flachen Eingabesequenzen)
    • Ein reichhaltigeres Typsystem und eine stärkere Artprüfung
  • XSLT 3.0: wurde am 8. Juni 2017 eine W3C -Empfehlung. Die Hauptfunktionen sind:[14]
    • Streaming -Transformationen: In früheren Versionen musste das gesamte Eingangsdokument in den Speicher gelesen werden, bevor es verarbeitet werden konnte.[15] und die Ausgabe konnte erst geschrieben werden, bis die Verarbeitung beendet war. Xslt 3.0 erlaubt XML -Streaming Dies ist nützlich für die Verarbeitung von Dokumenten, die zu groß sind, um in den Speicher zu passen, oder wenn Transformationen in angekettet werden XML -Pipelines.
    • Pakete, um die Modularität großer Stylesheets zu verbessern.
    • Verbessertes Umgang mit dynamischen Fehlern beispielsweise mit einem XSL: Versuchen Sie es mit Anweisungen.
    • Unterstützung für Karten und Arrays und ermöglicht es XSLT, JSON sowie XML zu verarbeiten.
    • Funktionen können jetzt Argumente für andere (höhere Ordnung) Funktionen sein.

Entwurfs- und Verarbeitungsmodell

Diagramm der grundlegenden Elemente und des Prozessflusses erweiterbarer Stylesheet -Sprachtransformationen.

Der XSLT -Prozessor nimmt ein oder mehrere XML -Quelldokumente sowie ein oder mehrere XSLT -Stylesheets an und verarbeitet sie, um ein Ausgabendokument zu erstellen. Im Gegensatz zu weit verbreiteten implementierten Imperative Programmierung Sprachen mögen C, Xslt ist deklarativ.[16] Das grundlegende Verarbeitungsparadigma ist eine Musteranpassung.[17] Anstatt eine imperative Folge von Aktionen aufzulisten, um in einer staatlichen Umgebung auszuführen funktional Ausdrücke Das repräsentiert direkt ihre bewertete Form: den Ergebnisbaum, der die Grundlage für die Ausgabe des Prozessors ist.

Ein typischer Prozessor verhält sich wie folgt. Angenommen, ein Stylesheet wurde bereits gelesen und vorbereitet, erstellt der Prozessor eine Quelle Baum Aus dem Eingabe -XML -Dokument. Anschließend verarbeitet es den Root-Knoten des Quellbaums, findet die bestinkurrinierende Vorlage für diesen Knoten im Stylesheet und bewertet den Inhalt der Vorlage. Anweisungen in jeder Vorlage richten den Prozessor im Allgemeinen an, entweder Knoten im Ergebnisbaum zu erstellen oder mehr Knoten im Quellbaum auf die gleiche Weise wie der Rootknoten zu verarbeiten. Schließlich wird der Ergebnisbaum als XML- oder HTML -Text serialisiert.

XPath

XSLT verwendet XPath Um Teilmengen des Quelldokumentbaums zu identifizieren und Berechnungen durchzuführen. XPath liefert auch eine Reihe von Funktionen, welches XSLT selbst weiter erweitert.

XSLT 1.0 verwendet XPath 1.0, während XSLT 2.0 XPath 2.0 verwendet. XSLT 3.0 funktioniert entweder mit XPath 3.0 oder 3.1. Im Fall von 1.0 und 2.0 wurden die XSLT- und XPath -Spezifikationen am selben Datum veröffentlicht. Mit 3,0 wurden sie jedoch nicht mehr synchronisiert; XPath 3.0 wurde im April 2014 eine Empfehlung, gefolgt von XPath 3.1 im Februar 2017; XSLT 3.0 folgte im Juni 2017.

XQuery im Vergleich

XSLT -Funktionen überschneiden sich mit denen von XQuery, die ursprünglich als Abfragesprache für große Sammlungen von XML -Dokumenten konzipiert wurde.

Die Standards XSLT 2.0 und XQuery 1.0 wurden von getrennten Arbeitsgruppen innerhalb entwickelt W3czusammenarbeiten, um gegebenenfalls einen gemeinsamen Ansatz zu gewährleisten. Sie teilen das gleiche Datenmodell, Typsystem und Funktionsbibliothek und beinhalten beide XPath 2.0 als Sublanguage.

Die beiden Sprachen sind jedoch in verschiedenen Traditionen verwurzelt und dienen den Bedürfnissen verschiedener Gemeinschaften. XSLT wurde hauptsächlich als Stylesheet -Sprache konzipiert, dessen Hauptziel es war, XML für den menschlichen Leser auf dem Bildschirm zu rendern, auf das Netz (Als ein Webvorlagesprache) oder auf Papier. XQuery wurde hauptsächlich als als konzipiert Datenbankabfragesprache in der Tradition von Sql.

Da die beiden Sprachen aus verschiedenen Gemeinschaften entstehen, ist XSLT bei seiner Behandlung von narrativen Dokumenten mit flexiblerer Struktur stärker, während XQuery in seiner Datenbearbeitung stärker ist, beispielsweise bei der Durchführung von relationalen Verbindungen.[18]

Medientypen

Das Element kann optional das Attribut annehmen Medientyp, was es einem ermöglicht, das zu setzen Medientyp (oder MIME -Typ) für die resultierende Ausgabe, zum Beispiel: . Die XSLT 1.0 -Empfehlung empfiehlt die allgemeineren Attributtypen Text/xml und Anwendung/XML Da es lange Zeit keinen registrierten Medientyp für XSLT gab. Während dieser Zeit Text/XSL wurde der de facto Standard. In XSLT 1.0 wurde nicht angegeben, wie die Medientyp Werte sollten verwendet werden.

Mit der Veröffentlichung des XSLT 2.0 empfahl die W3C die Registrierung des MIME -Medienarts Anwendung/XSLT+XML[19] und es wurde später bei der registriert Internet zugewiesene Zahlen Autorität.[20]

Pre-1.0 Arbeitsentwürfe von XSLT verwendet Text/XSL In ihren Einbettungsbeispielen wurde dieser Typ implementiert und wird weiterhin von Microsoft im Internet Explorer gefördert[21] und msxml. Es ist auch weithin in der anerkannt XML-Stylesheet Verarbeitungsanweisung durch andere Browser. In der Praxis sind Benutzer, die die Transformation im Browser mit diesem Verarbeitungsanweis steuern möchten, daher verpflichtet, diesen nicht registrierten Medientyp zu verwenden.[22]

Beispiele

Diese Beispiele verwenden das folgende eingehende XML -Dokument

    Benutzername ="JS1">  John  Schmied     Benutzername ="Mi1">  Morka  Ismincius    

Beispiel 1 (Transformation von XML in XML)

Dieses XSLT -Stylesheet bietet Vorlagen, um das XML -Dokument zu transformieren:

  xmlns: xsl ="http://www.w3.org/1999/xsl/transform" Version ="1.0">   Methode ="XML" Einzug ="Jawohl"/>   Match ="/Personen">     select ="Person"/>       Match ="Person">   Benutzername ="{@Nutzername}">   select ="Name" />      

Die Bewertung führt zu einem neuen XML -Dokument mit einer anderen Struktur:

    Benutzername ="JS1">John   Benutzername ="Mi1">Morka  

Beispiel 2 (Transformation von XML in XHTML)

Verarbeitung des folgenden Beispiels XSLT -Datei

   Version ="1.0"  xmlns: xsl ="http://www.w3.org/1999/xsl/transform"  xmlns ="http://www.w3.org/1999/xhtml">   Methode ="XML" Einzug ="Jawohl" codieren ="UTF-8"/>   Match ="/Personen">     </span>Testen von XML -Beispiel<span class="nt">   
  

Personen

    select ="Person"> select ="Nachname" />
Match ="Person">
  • select ="Nachname"/> <xsl: text>, select ="Name"/>
  • Mit der oben gezeigten XML -Eingabedatei führt im Folgenden zu Xhtml (Whitespace wurde hier aus Klarheit angepasst):

      xmlns ="http://www.w3.org/1999/xhtml">   </span>Testen von XML -Beispiel<span class="nt">     

    Personen

    • Ismincius, Morka
    • Smith, John

    Dieses XHTML generiert die folgende Ausgabe, wenn sie in einem Webbrowser gerendert wird.

    Rendered XHTML, das aus einer XML -Eingabedatei und einer XSLT -Transformation erzeugt wird.

    Damit ein Webbrowser eine XSL -Transformation in ein angezeigtes XML -Dokument anwenden kann, kann eine XML -Stylesheet -Verarbeitungsanweisung in XML eingefügt werden. Wenn das Stylesheet in Beispiel 2 beispielsweise als "example2.xsl" verfügbar wäre, könnte der folgende Befehl zum ursprünglichen eingehenden XML hinzugefügt werden:[23]

     

    In diesem Beispiel, Text/XSL ist nach den W3C -Spezifikationen technisch falsch[23] (die sagen, dass der Typ sein sollte Anwendung/XSLT+XML), aber es ist der einzige Medientyp, der ab 2009 in den Browsern häufig unterstützt wird, und die Situation ist im Jahr 2021 unverändert.

    Prozessorimplementierungen

    • Raptorxml von Altova ist ein XSLT 3.0-Prozessor, der im XMLSpy Development Toolkit verfügbar ist und als freistehende Server-Implementierung mithilfe einer REST-Schnittstelle aufgerufen wird.
    • IBM Bietet die XSLT-Verarbeitung an, die in ein Spezialhardware-Gerät unter dem eingebettet ist Datapower Marke.
    • libxslt ist ein frei Bibliothek unter dem MIT -Lizenz Das kann in kommerziellen Anwendungen wiederverwendet werden. Es basiert auf libxml und implementiert in C für Geschwindigkeit und Portabilität. Es unterstützt XSLT 1.0 und EXSLT Erweiterungen.[24]
    • Microsoft Bietet zwei XSLT -Prozessoren (nur XSLT 1.0). Der frühere Prozessor MSXML Bietet COM -Schnittstellen; Von MSXML 4.0 enthält es auch das Dienstprogramm des Befehlszeilens msxsl.exe.[36] Die .NET-Laufzeit enthält einen separaten integrierten XSLT-Prozessor in seiner System.xml.xsl Bibliothek.
    • Sachsen ist ein XSLT 3.0- und XQuery 3.1 -Prozessor mit Open Source und proprietär Versionen für den eigenständigen Betrieb und für Java, JavaScript und .net. Ein separates Produkt Saxon-Js[37] bietet XSLT 3.0 -Verarbeitung ein Node.js und im Browser.
    • Xalan ist ein Open Source XSLT 1.0 -Prozessor aus dem Apache Software Foundation Verfügbar für Java und C ++. Eine Variante des Xalan -Prozessors ist als Standard -XSLT -Prozessor in der Standard -Java -Verteilung von Oracle enthalten.
    • Webbrowser: Safari, Chrome, Firefox, Opera und Internet Explorer unterstützen alle XSLT 1.0 (nur). Browser können auf dem Fliege Transformationen von XML-Dateien durchführen und die Transformationsausgabe im Browserfenster anzeigen. Dies geschieht entweder durch Einbetten des XSL in das XML -Dokument oder durch Bezugnahme auf eine Datei mit XSL -Anweisungen aus dem XML -Dokument. Letztere funktionieren aufgrund seines Sicherheitsmodells möglicherweise nicht mit Chrome auf Dateien aus lokalem Dateisystem.[38]

    Leistung

    Die meisten frühen XSLT -Prozessoren waren Dolmetscher. In jüngerer Zeit wird die Codegenerierung immer häufiger unter Verwendung tragbarer Zwischensprachen (wie z. Java -Bytecode oder .net Gemeinsame Zwischensprache) als Ziel. Selbst die Interpretationsprodukte bieten jedoch im Allgemeinen separate Analyse- und Ausführungsphasen, sodass ein optimierter Expressionsbaum im Gedächtnis erstellt und wiederverwendet werden kann, um mehrere Transformationen durchzuführen. Dies bietet erhebliche Leistungsvorteile in Online -Publishing -Anwendungen, bei denen die gleiche Transformation mehrmals pro Sekunde auf verschiedene Quelldokumente angewendet wird.[39] Diese Trennung spiegelt sich im Design von XSLT -Verarbeitungs -APIs (wie z. Jaxp).

    Frühe XSLT -Prozessoren hatten nur sehr wenige Optimierungen. Stylesheet -Dokumente wurden in eingelesen Dokumentobjektmodelle Und der Prozessor würde direkt auf sie reagieren. XPath Motoren wurden ebenfalls nicht optimiert. Zunehmend verwenden XSLT -Prozessoren jedoch Optimierungstechniken, die in funktionellen Programmiersprachen und Datenbankabfragesprachen enthalten sind, wie z. B. statische Umschreiben eines Expressionsbaum (und erlauben Sie "frühen Ausstieg", wenn der Prozessor einen Ausdruck bewerten kann, z. B. Follow-Sibling ::*[1] Ohne vollständige Bewertung aller Suberxpressionen). Viele Prozessoren verwenden auch Baumdarstellungen, die erheblich effizienter sind (sowohl in Raum als auch in der Zeit)[40] als allgemeine DOM-Implementierungen.

    Im Juni 2014, Debbie Lockett und Michael Kay stellte ein Open-Source-Benchmarking-Framework für XSLT-Prozessoren als XT-Speedo ein.[41]

    Siehe auch

    Verweise

    1. ^ a b "Transformation". 2012-09-19.
    2. ^ "XML -Ausgangsmethode". 2012-09-19.
    3. ^ "Wofür wird XSLT verwendet?". 2018-02-07.
    4. ^ "Einführung". XSL Transformations (XSLT) Version 1.0 W3C Empfehlung. W3c. 16. November 1999. Abgerufen 7. November, 2012.
    5. ^ XSLT Version 2.0 ist abgeschlossen: ein rein transformationsbasierter Beweis
    6. ^ Michael Kay. "Welche Art von Sprache ist XSLT?". Abgerufen 8. Juli, 2016.
    7. ^ "Ein Vorschlag für XSL". W3c. Abgerufen 7. November, 2012.
    8. ^ "XML und Semantic Web W3C Standards Timeline" (PDF). Archiviert von das Original (PDF) Am 2013-04-24. Abgerufen 2012-02-04.
    9. ^ "XSL -Transformationen (XSLT)". W3.org. 1999-11-16. Abgerufen 2014-07-12.
    10. ^ "XSL Transformations (XSLT) Version 1.1". W3.org. 2001-08-24. Abgerufen 2014-07-12.
    11. ^ "XML Path Language (XPath) 2.0 (zweite Ausgabe)". W3.org. 2010-12-14. Abgerufen 2014-07-12.
    12. ^ "XSL Transformations (XSLT) Version 2.0". W3.org. 2007-01-23. Abgerufen 2014-07-12.
    13. ^ "XML und Semantic Web W3C Standards Timeline" (PDF). 2012-02-04. Archiviert von das Original (PDF) Am 2013-04-24. Abgerufen 2012-02-04.
    14. ^ "Was ist neu in XSLT 3.0?". W3. Abgerufen 6. Januar 2014.
    15. ^ Kay, Michael. "Ein Streaming XSLT -Prozessor". Balisage: Die Markup Conference 2010 Proceedings. Abgerufen 15. Februar 2012.
    16. ^ "Entdecken Sie die Wunder von XSLT: XSLT -Macken". Archiviert von das Original Am 2011-07-09. Abgerufen 2011-02-11. XSLT ist eine sehr spezialisierte Sprache mit einem ausgeprägten deklarativen Geschmack.
    17. ^ Kay, Michael. "Welche Art von Sprache ist XSLT?". IBM. Abgerufen 13. November 2013.
    18. ^ "Saxonica: XSLT und XQuery". www.saxonica.com. Abgerufen 2022-06-29.
    19. ^ "XSL Transformations (XSLT) Version 2.0". W3c. Abgerufen 19. Oktober 2012.
    20. ^ "Anwendungsmedientypen". Iana. Abgerufen 19. Oktober 2012.
    21. ^ "XSLT -Anforderungen für das Anzeigen von XML in einem Browser". Microsoft. Abgerufen 19. Oktober 2012.
    22. ^ Kay, Michael (2008). Referenz des XSLT 2.0 und XPATH 2.0. Wiley. p.100. ISBN 978-0-470-19274-0.
    23. ^ a b "XSL Transformations (XSLT) Version 1.0: W3C -Empfehlung - Einbettungsstylesheets". W3c. 16. November 1999. Abgerufen 20. September 2016.
    24. ^ "Die XSLT C -Bibliothek für GNOME: libxslt". Abgerufen 23. November 2012.
    25. ^ "Die XSLT C -Bibliothek für GNOME: Das XSLTPROC -Tool". Abgerufen 23. November 2012.
    26. ^ "XSLTPROC MAN PAGE". Abgerufen 23. November 2012.
    27. ^ "Neues Paket: libxslt". Abgerufen 23. November 2012.
    28. ^ "Das Webkit Open Source -Projekt - XSLT". Abgerufen 2009-10-25.
    29. ^ "Der XML C -Parser und das Toolkit von GNOME: Python und Bindungen". Abgerufen 23. November 2012.
    30. ^ "Xml :: libxslt - Schnittstelle zur GNOME libxslt Library". CPAN. Abgerufen 23. November 2012.
    31. ^ "libxslt-ruby". Abgerufen 23. November 2012.
    32. ^ "libxml". Abgerufen 23. November 2012.
    33. ^ "CL-LIBXML2 High-Level-Wrapper um libxml2 und libxslt-Bibliotheken".
    34. ^ "Tclxml". Abgerufen 21. Mai 2013.
    35. ^ "libxml ++". SourceForge.net. Abgerufen 23. November 2012.
    36. ^ "Befehlszeilentransformation Dienstprogramm (MSXSL.EXE)". Microsoft. Abgerufen 22. Oktober 2012.
    37. ^ "Saxon-Js". Saxonik. Abgerufen 6. September 2018.
    38. ^ "Ausgabe 58151: Das Laden von XML -Datei in lokalem Dateisystem mit XMLHTTPREquest nicht laden".
    39. ^ Sachsen: Anatomie eines XSLT -Prozessors - Artikel zur Beschreibung von Implementierungs- und Optimierungsdetails eines beliebten XSLT -Prozessors.
    40. ^ Lumley, John; Kay, Michael (Juni 2015). "Verbesserung des Musteranpassungsleistung in XSLT". XML London 2015: 9–25. doi:10.14337/xmllondon15.lumley01. ISBN 978-0-9926471-2-4.
    41. ^ Kay, Michael; Lockett, Debbie (Juni 2014). "Benchmarking XSLT Performance". XML London 2014: 10–23. doi:10.14337/xmllondon14.kay01. ISBN 978-0-9926471-1-7.

    Weitere Lektüre

    • Xslt von Doug Tidwell, veröffentlicht von O’Reilly ( ISBN0-596-00053-7)
    • XSLT -Kochbuch von Sal Mangano, veröffentlicht von O’Reilly ( ISBN0-596-00974-7)
    • Referenz des XSLT 2.0 -Programmierers durch Michael Kay ( ISBN0-764-56909-0)
    • Referenz des XSLT 2.0 und XPATH 2.0 von Michael Kay ( ISBN978-0-470-19274-0)
    • XSLT 2.0 Webentwicklung von Dmitry Kirsanov ( ISBN0-13-140635-3)
    • XSL Begleiter, 2. Auflage Von Neil Bradley, veröffentlicht von Addison-Wesley ( ISBN0-201-77083-0)
    • XSLT und XPath am Rande (unbegrenzte Ausgabe) durch Jeni Tennison, veröffentlicht von Hungry Minds Inc, USA ( ISBN0-7645-4776-3)
    • XSLT & XPATH, eine Anleitung zu XML -Transformationen von John Robert Gardner und Zarella Rendon, veröffentlicht von Prentice-Hall ( ISBN0-13-040446-2)
    • Xsl-fo Von Dave Pawson, veröffentlicht von O'Reilly ( ISBN978-0-596-00355-5)

    Externe Links

    Dokumentation
    XSLT -Code -Bibliotheken
    • EXSLT ist eine weit verbreitete Community -Initiative, um XSLT Erweiterungen bereitzustellen.
    • FXSL ist eine Bibliothek, die Unterstützung für den implementieren Funktionen höherer Ordnung in xslt. FXSL ist in XSLT selbst geschrieben.
    • Die XSLT Standard Library XSLTSL bietet dem XSLT -Entwickler einen Satz von XSLT -Vorlagen für häufig verwendete Funktionen. Diese werden nur in XSLT implementiert, dh sie verwenden keine Erweiterungen. XSLTSL ist ein Quellforge -Projekt.
    • Kernow Eine GUI für Saxon, die eine Punkt- und Klick -Schnittstelle zum Ausführen von Transformationen bietet.
    • xslt.js - XML ​​mit XSLT transformieren JavaScript -Bibliothek, die XML mit XSLT im Browser transformiert.