XSLT ist ein ausgereifter, weit verbreiteter Standard.
Es kann in Browsern (auch im alten IE) und auf der Serverseite verwendet werden (nginx hat ein XSLT-Modul, das natürlich von Programmiersprachen verwendet werden kann). Die Implementierungen sind kompiliert und sollten daher viel schneller als Python oder JS sein. Die JS-Implementierung Saxon JS kann zumindest als Fallback verwendet werden. Jinja, Angular, Ruby's Slim, ASP und PHP-Vorlagen sind nicht einmal eng miteinander verbunden.
Eine XSL-Vorlage kann problemlos in einer IDE validiert werden. Wie viele IDEs können mit Jinja oder Angular helfen?
Es sieht so aus, als wäre es eine perfekte Idee, Benutzeroberfläche und Daten mit XSLT zu zerlegen.
Zugegebenermaßen können Implementierungen in einigen Eckfällen zu unterschiedlichen Ergebnissen führen, dies ist jedoch nur beim Templating auf der Clientseite ein Problem. Das Gleiche gilt für HTML, CSS und alles andere, was auf der Client-Seite ausgeführt wird.
Warum also nicht XSLT?
quelle
Antworten:
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, ist unerheblich, wenn Sie nicht das Problem haben, für dessen Lösung die Technologie entwickelt wurde.
Es gibt mehrere Gründe, warum der Anwendungsfall für XSLT weggefallen ist:
XSLT ist aus der Veröffentlichung entstanden, bei der Sie einen Einwegprozess von einem strukturierten Quellformat zu mehreren Veröffentlichungsformaten wie Druck-, PDF- und statischen Webseiten durchführen können. Die meisten Websites passen nicht zu diesem Anwendungsfall.
quelle
<chapter><title><par>...
) und XSLT wäre es mit dem „erweitern“div
,table
, jetr
nach Bedarf, mit dem Zusatz , dass es im Cache gespeichert werden kann. Also (auch hier weiß ich nicht, wie weit verbreitet dieser "Vorteil" erklärt wurde) hätte die verbesserte Bandbreite auch geschadet (und die Tatsache, dass die meisten HTML-Seiten ziemlich klein sind).Kommt darauf an, was du mit "im Web" meinst.
XSLT ist sehr weit verbreitet. Soweit wir anhand von Metriken wie der Anzahl der StackOverflow-Fragen beurteilen können, befindet es sich in den Top-30-Programmiersprachen, was es wahrscheinlich zur Top-Programmiersprache für Datenmodelle nach SQL macht.
Aber XSLT ist clientseitig, 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 Publishing-Workflows verwendet. Es wird natürlich auch in vielen Anwendungen verwendet, die sehr wenig mit dem Web zu tun haben, z. B. im Print-Publishing.
Es gibt eine Reihe von Gründen, warum XSLT im Browser nicht häufig verwendet wird. Der Hauptgrund ist, dass eine gute konforme XSLT-Unterstützung von den Browserverkäufern sehr langsam war. Niemand wollte es verwenden, bis es in jedem Browser verfügbar war, und bis 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 Latecomer auf der Party, und die clientseitige Webentwicklung ist sehr modisch, sodass es nicht ausreicht, nur eine zu haben Produkt, das alle technischen Anforderungen erfüllt. Modegetrieben ist auch, dass die meisten datenorientierten Websites (im Gegensatz zu dokumentenorientierten) auf JSON anstatt auf XML umgestellt wurden, vor allem, weil JSON mithilfe von Javascript viel einfacher zu bearbeiten ist.
Das andere Problem ist, dass XSLT eine Love-It-Or-Hass-It-Sprache ist. Das deklarative, regelbasierte und funktionsorientierte Paradigma spricht viele aufgrund seines hohen Niveaus an, kann jedoch diejenigen abschrecken, deren einzige Programmiererfahrung darin besteht, einen zwingenden Code zu schreiben, der dem Computer genau sagt, was und in welchem Umfang zu tun ist welcher Reihenfolge.
quelle
Ich wechsle 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 ist. Etwas mit der Semantik von XSLT, aber viel besserer Syntax, wäre eine ganz andere Sache, denke ich. Es gibt zum Beispiel einige wirklich coole Lisp-basierte XML-Transformationssprachen.
XSLT kann nicht entscheiden, ob es sich um eine Baumumschreibungssprache, eine Funktionssprache oder eine prozedurale Sprache handeln soll. Es hat Eigenschaften von all diesen, aber es ist in keinem von ihnen wirklich gut. Für jeden der drei Aspekte gibt es bessere Sprachen.
quelle
Weil XML selbst für 99,9% der Fälle wie veralteter Abwärtskompatibilitätsmüll aussieht.
Der einzige Anwendungsfall, für den XML nicht sofort überlegene Ersetzungen bietet, sind Dinge wie docx oder odf, und möglicherweise wäre SGML besser gewesen *. Das heißt, wir haben eine unglaublich umfangreiche Dokumentstruktur, in der alle möglichen Dinge ineinander verschachtelt sind und große Transformationen angewendet werden, damit sie auf dem Bildschirm und dem Drucker korrekt angezeigt werden.
Fast immer wird XML zum Weitergeben strukturierter Daten verwendet, und anscheinend wurde XSLT entwickelt, um 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. Das erste Standbein von XML waren die in Java und Javacript integrierten Parser. JSON hat diese Barriere durchbrochen, indem ein integrierter Parser für die Fälle eingesetzt wurde, in denen der JSON-Quelle vertraut wurde (was die meisten von ihnen waren, als sie noch jung waren).
Und die Welt ist verändert. Der eingebaute Bibliotheksvorteil ist jetzt ein unbedeutender Vorteil. XHTML wurde sofort abgelehnt und seine Ersetzung erbte nicht von ihm, sondern von seinem Vorgänger.
XML wird jetzt verwendet, um direkt mit demjenigen zu sprechen, der es empfangen möchte, und es wird im gesamten Stoff in dem gewünschten Format generiert oder es wird umgekehrt eingelesen und direkt aus dem gesendeten Formular in das Objektmodell analysiert Ein Speicherformat oder ein universelles Austauschformat, das von Schema zu Schema umgewandelt werden muss, ist nicht mehr erforderlich.
* 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 gibt es in XML kein Zahlenformat. Wenn Sie also alle Datentypen in Zeichenfolgen einfügen, gewinnen Sie trotzdem gegen XML.
quelle