it-swarm.com.de

Warum wird XSLT im Web so selten verwendet?

XSLT ist ein ausgereifter, weithin akzeptierter Standard.

Es kann in Browsern (auch im alten IE) und auf der Serverseite verwendet werden (nginx verfügt über ein XSLT-Modul, das natürlich aus Programmiersprachen verwendet werden kann). Die Implementierungen sind kompiliert und sollten daher viel schneller sein als Python oder JS. Die JS-Implementierung Saxon JS kann zumindest als Fallback verwendet werden. Jinja, Angular, Ruby's Slim, = ASP und PHP Templating sind nicht einmal nah.

Eine XSL-Vorlage kann in einer IDE einfach validiert werden. Wie viele IDEs können bei Jinja oder Angular helfen?

Es scheint eine perfekte Idee zu sein, Benutzeroberfläche und Daten mit XSLT zu zerlegen.

Zwar können Implementierungen in einigen Eckfällen zu unterschiedlichen Ergebnissen führen, aber es ist nur ein Problem mit Vorlagen auf der Clientseite. Das Gleiche gilt für HTML, CSS und alles andere, was auf der Clientseite erledigt wird.

Warum also nicht XSLT?

13
George Sovetov

XSLT spielt im modernen interaktiven Web keine wirklich nützliche Rolle. Der Zweck von XSLT besteht darin, von einer XML-Sprache in eine andere zu transformieren - aber das müssen Sie eigentlich gar nicht erst tun. Wie leistungsfähig, schnell und gut unterstützt eine Technologie ist, spielt keine Rolle, wenn Sie nicht das Problem haben, für das die Technologie entwickelt wurde.

Es gibt mehrere Gründe, warum der Anwendungsfall für XSLT weg ist:

  • HTML hat gewonnen. XSLT sollte nützlich sein, um "Rich Text" -Inhalte in einem semantischen Markup-Format in HTML umzuwandeln. Aber HTML ist an sich schon ein perfektes Format. Warum also nicht einfach das für den Inhalt verwenden und die Transformation überspringen?
  • CSS ist viel leistungsfähiger geworden. Eines der Versprechen von XSLT war, dass Sie das Quell-Markup sauber und semantisch halten und es dann in "Präsentations-HTML" umwandeln können, das browserübergreifend funktioniert und in dem Sie Elemente usw. neu anordnen können. Aber Sie brauchen heutzutage nicht wirklich Präsentations-HTML, Sie können semantisches HTML verwenden und CSS kann das erforderliche Styling und Layout ausführen.
  • XML ist nicht zum allgegenwärtigen Format für Daten geworden. Beim Abrufen von SQL-Daten aus einer Datenbank ist es viel einfacher, sie direkt in eine Vorlage einzufügen, als sie zuerst in XML und dann über XSLT zu transformieren. Und JSON hat XML für strukturierte Daten auf der Clientseite so gut wie ersetzt.
  • XSLT dient zum gleichzeitigen Transformieren eines gesamten Dokuments. In modernen interaktiven Webseiten werden jedoch immer wieder kleine Datenausschnitte stückweise heruntergeladen und auf der Seite zusammengeführt.
  • Daten sind einfach nicht so komplex. In den meisten Anwendungsfällen lösen einfachere Vorlagenformate mit Platzhaltern und Repeatern die Aufgabe einwandfrei. XSLT ist viel leistungsfähiger, aber Sie benötigen diese zusätzliche Leistung selten und es verursacht hohe Kosten für Komplexität und Hässlichkeit.

XSLT entstand aus dem Veröffentlichen, bei dem Sie einen Einwegprozess von einem strukturierten Quellformat zu mehreren Veröffentlichungsformaten wie print, PDF und statische Webseiten) durchführen konnten. Die meisten Websites passen nicht zu diesem Anwendungsfall .

40
JacquesB

Kommt darauf an, was du mit "im Web" meinst.

XSLT ist sehr verbreitet. Soweit wir anhand von Metriken wie der Anzahl der StackOverflow-Fragen beurteilen können, befindet es sich in den Top 30 der Programmiersprachen, was es wahrscheinlich zur Top-datenmodellspezifischen Programmiersprache nach SQL macht.

XSLT ist jedoch auf der Clientseite, dh im Browser, nicht weit verbreitet. Es wird normalerweise entweder serverseitig verwendet, um Inhalte bei Bedarf als Antwort auf HTTP-Anforderungen bereitzustellen, oder es wird im Batch-Modus als Teil eines Veröffentlichungsworkflows verwendet. Es wird natürlich auch in vielen Anwendungen verwendet, die sehr wenig mit dem Web zu tun haben, z. im Print-Publishing.

Es gibt eine Reihe von Gründen, warum XSLT im Browser nicht häufig verwendet wird. Der Hauptgrund ist, dass die gute konforme XSLT-Unterstützung von den Browser-Anbietern nur sehr langsam erfolgte. Niemand wollte es verwenden, bis es in jedem Browser verfügbar war, und als es in jedem Browser verfügbar war, waren die Dinge, die die Leute im Browser tun wollten, weitergegangen (erinnern Sie sich an "Web 2.0"?) und die XSLT-Implementierungen im Browser hat Ihnen nicht geholfen, interaktive Anwendungen zu erstellen oder Daten mit AJAX abzurufen.

Saxonica (Haftungsausschluss, dies ist mein Produkt) hat versucht, diese Lücken mit Saxon-JS zu schließen, aber das Produkt ist ein Neuling auf der Party, und die clientseitige Webentwicklung ist sehr modisch, daher reicht es nicht aus, nur eine zu haben Produkt, das alle technischen Anforderungen erfüllt. Ein Teil der Modeorientierung besteht darin, dass die meisten datenorientierten Websites (im Gegensatz zu dokumentenorientierten Websites) eher auf JSON als auf XML umgestellt wurden, hauptsächlich weil JSON viel einfacher mit Javascript zu bearbeiten ist.

Das andere Problem ist, dass XSLT eine Love-It-Or-Hass-It-Sprache ist. Sein deklaratives, regelbasiertes, funktional orientiertes Paradigma spricht viele aufgrund seiner hohen Ebene an, kann jedoch diejenigen abschrecken, deren einzige Erfahrung in der Programmierung darin besteht, imperativen Code zu schreiben, der dem Computer genau sagt, was zu tun ist und in was welcher Reihenfolge.

9
Michael Kay

Ich schwanke zwischen der Beantwortung dieser Frage und dem Schließen als primär meinungsbasiert hin und her. Also, hier ist mein Flip:

Kurz gesagt, weil XML eine beschissene Programmiersprache macht. Etwas mit dem Semantik von XSLT, aber viel besser Syntax wäre eine ganz andere Sache, denke ich. Es gibt zum Beispiel einige wirklich coole LISP-basierte XML-Transformationssprachen.

XSLT kann sich nicht entscheiden, ob es eine Baumumschreibungssprache, eine Funktionssprache oder eine prozedurale Sprache sein soll. Es hat Funktionen von all diesen, aber es ist in keiner von ihnen wirklich gut. Für jeden der drei Aspekte gibt es bessere Sprachen.

3
Jörg W Mittag

Weil XML selbst in 99,9% der Fälle als veralteter Abwärtskompatibilitäts-Junk aussieht.

Der einzige Anwendungsfall, für den XML nicht sofort überlegene Ersetzungen hat, sind Dinge wie docx oder odf, und es ist möglich, dass SGML besser gewesen wäre *. Das heißt, wir haben eine unglaublich umfangreiche Dokumentstruktur, in der alle Arten von Dingen ineinander verschachtelt sind und große Transformationen angewendet werden, damit sie auf dem Bildschirm und auf dem Drucker korrekt angezeigt werden können.

Fast immer wird XML zum Weitergeben strukturierter Daten verwendet, und es scheint, dass XSLT darauf ausgelegt ist, strukturierte Dokumentdaten in Dokumentdaten umzuwandeln. Dieser Anwendungsfall stirbt aus. JSON ist XML für strukturierte Daten direkt überlegen. ** Sowohl Markdown als auch YAML sind bei leicht formatierten Daten überlegen. Der erste Schritt von XML waren die integrierten Parser in Java und Javacript. JSON hat diese Barriere durchbrochen, indem ein integrierter Parser für die Fälle eingesetzt wurde, in denen der JSON-Quelle vertraut wird (was die meisten waren) sie, als es jung war).

Und die Welt ist verändert. Der eingebaute Bibliotheksvorteil ist jetzt ein trivialer Vorteil. XHTML wurde sofort abgelehnt und sein Ersatz erbte nicht von ihm, sondern von seinem Vorgänger.

XML wird jetzt verwendet, um direkt mit dem Typ zu sprechen, der es empfangen möchte, und es wird in ganzem Stoff im gewünschten Format generiert oder umgekehrt direkt aus dem Formular, in das es gesendet wurde, eingelesen und in das Objektmodell analysiert. Da es nicht mehr ein ist Speicherformat oder ein universelles Austauschformat, dessen Umwandlung von Schema zu Schema nicht mehr erforderlich ist.

* Sie lehrten im College, dass SGML nie implementiert wurde. Sie haben gelogen.

** Ich habe die Beschwerden über schlechte Zahlenformate in JSON gehört. Auf der anderen Seite hat XML kein Zahlenformat, so dass nur das Füllen aller Datentypen in Zeichenfolgen gegen XML gewinnt.

0
Joshua