Gibt es gute Gründe, XSLT zu verwenden, zu lernen oder zu empfehlen? [geschlossen]

28

Ich bin seit 8 Jahren Entwickler. Wir haben XSLT hauptsächlich verwendet, um XML in HTML umzuwandeln. Wir haben es auch für die Umwandlung von XML in XML verwendet.

Aber wir haben jetzt Ersatz für alles. HTML kann komfortabel mit Programmiersprachen wie ASP.Net erstellt werden. XML kann in allen gängigen Hochsprachen gelesen und bearbeitet werden. Da das Programmieren in XSLT ein wenig komplex ist, würde es jeder vorziehen, an den neuesten Programmiersprachen zu arbeiten.

Nun meine Frage: Wird XSLT in Zukunft eine bedeutende Wahl sein, wenn man nicht die Tatsache berücksichtigt, dass bereits entwickeltes XSLT beibehalten wird? Kann ich neuen Programmierern empfehlen, XSLT zu lernen?

SaravananArumugam
quelle
3
Relavent reading: dangerous.cat-v.org/software/xml
Josh K
12
Für mich ist XSLT eine schrecklich kryptische Programmiersprache, die es leugnet, eine Programmiersprache zu sein. Es ist mit reinen funktionalen Programmiersprachen verwandt, aber viel weniger lesbar, viel weniger wartbar und viel weniger praktisch. Da es sich um eine in Ablehnung befindliche Programmiersprache handelt, haben BENUTZER von beispielsweise DocBook (eine komplexe Software, die in der XSLT-Sprache geschrieben ist) das Problem, die verschiedenen Interpreter, Prüfer, Bibliotheken usw. zu integrieren, damit das <expletive Löschen> funktioniert.
Steve314
8
Meinst du nicht <expletive deleted="true" />?
MSalters
6
@ Steve314 Ich liebe XSLT, du kannst lustige Sachen machen wie dynamisches SQL -> dynamisches XML -> dynamisches XSLT -> dynamisches HTML + JavaScript: P
Darknight
5
@MSalters - Sie haben die XML-Deklaration, das Stammelement, die Namespaces, die DTD, entweder das XML-Schema-Schema oder das Relax NG-Schema (oder beides), den XMLPath-Ausdruck, der angibt, wo das Expletiv gelöscht wurde, ausgelassen. .
Steve314

Antworten:

29

Es gibt einige wichtige Fälle, in denen XSLT eine gute Wahl sein kann:

  • ETL- Software ( Extract, Transform, Load ) kann in einigen Fällen XSLT verwenden. Dies kann beispielsweise eine gute Wahl sein, wenn sowohl extrahierte als auch zu ladende Daten im XML-Format vorliegen und die Transformation möglicherweise geändert wird, ohne dass die Anwendung neu kompiliert werden muss.

  • Einige Anwendungen, die Daten in XML speichern, verwenden XSLT, um diese Daten in einem für Menschen lesbaren Format zu präsentieren¹. Beispielsweise speichert Windows Live Messenger die Ablaufverfolgung von Nachrichten als XML. Wenn Sie den Verlauf jedoch in WLM selbst öffnen, wird eine hübsche Tabelle angezeigt, bei der es sich tatsächlich um HTML handelt, das über XSLT erstellt wurde.

  • Einige entwickler- oder datenorientierte Websites möchten möglicherweise einen Zugriff auf XML gewähren, wenn die Seiten der Website programmgesteuert verwendet werden sollen². Es ist irgendwie besser, als HTML-Parser zu verwenden, zumal der HTML-Code jederzeit geändert werden kann.

  • Wenn XSLT in Websites verwendet wird, ist eine strikte Trennung zwischen HTML und CodeBehind möglich, sodass ein Entwickler für CodeBehind und ein anderer Entwickler für HTML / CSS-Inhalte eingestellt werden kann. Siehe Punkt 1 in meiner Antwort auf eine andere Frage .

Wird XSLT in Zukunft eine bedeutende Wahl sein? Nun, dies ist heute keine bedeutende Wahl, und ich bezweifle, dass die Verwendung von XSLT mit der Zeit zunehmen wird. Ich ignoriere den Grund dafür, aber viele Entwickler mögen XML nicht und hassen XSLT.

Können Sie neuen Programmierern empfehlen, XSLT zu studieren? Sicher! Nicht nur XSLT kann unter Umständen verwendet werden, wenn andere Ansätze schwieriger wären, sondern auch XSLT hat einen sehr spezifischen Ansatz, den andere Sprachen nicht haben.


¹ Damit meine ich, dass XML nicht wirklich für Menschen lesbar ist: Wenn Sie eine Person, die nicht in der IT arbeitet, zum Lesen von XML auffordern, wird sie entsetzt sein.
² Ich weiß, dass es Webdienste gibt. Manchmal ist es jedoch einfacher und unkomplizierter, auf jeder Seite ein dynamisches Objekt zu erstellen, es dann in XML zu serialisieren und dann entweder über XSLT in HTML umzuwandeln oder den Bot direkt auf das XML zugreifen zu lassen.

Arseni Mourzenko
quelle
Minimales XML-Format lässt sich viel einfacher rückentwickeln als eine typische Binärdatei, aber diese Selbstbeschreibungs-Besessenheit ist verrückt. Wenn Sie ein XML-Dokument entschlüsseln möchten, entfernen Sie zunächst so viel Unordnung wie möglich, beginnend mit der DTD.
Steve314
3
Für andere Leser: ETL = Extrahieren, Transformieren, Laden
Peter Krauss
12

XSLT ist so ziemlich tot, weil es nur noch wenige Enthusiasten nutzen. Es gibt jedoch keine echte Alternative dafür. Wenn Sie sich nur auf einen einzelnen Anwendungsfall konzentrieren, beispielsweise das Rendern von HTML-Seiten aus semantischen Dokumenten, finden Sie bessere Tools. Wenn Sie nach Code-Generierungs-Template-Engines suchen, gibt es wieder bessere Tools. Dasselbe gilt für die Dokumenttransformation.

Wenn Sie jedoch nach einem Tool suchen, das all diese Anwendungsfälle auf allen Plattformen recht gut unterstützt, ist die Auswahl sehr begrenzt. Wenn Sie bereits ein XML-Dokument haben und es in etwas umwandeln müssten, um Ihr Tool verwenden zu können, ist es wahrscheinlich besser, Ihre Daten nur mit XSLT (oder XQuery) zu verarbeiten.

In beiden Fällen können Sie XSLT innerhalb weniger Tage oder Wochen erlernen. Es schadet Ihnen nicht, Erfahrungen aus erster Hand zu machen. Probieren Sie es einfach aus. Es lohnt sich zumindest, diese Art von Muster (regelbasierte Transformationen) für die spätere Verwendung in Ihrem Kopf zu speichern. Dies allein rechtfertigt das Erlernen von XSLT.

Michael
quelle
8

Hmm ich frage mich, ob die High-Level-APIs, die HTML aus Code erstellen, XSLT "under the hood" verwenden ...

XSLT wird häufig dort eingesetzt, wo ich XML von einem Quellformat in eine Vielzahl anderer umwandle. Sie können damit auch XML in eine Nicht-XML-Ausgabe umwandeln. Ich habe nicht viel davon getan, aber ich habe gehört, dass es unter anderem PDF und PostScript zum Ziel hat.

FrustratedWithFormsDesigner
quelle
3
Das ist XSL / FO, der siamesische Zwilling von XSL / T. Sie wurden bei der Geburt getrennt.
8

Ja.

Nehmen wir ein gutes Beispiel: Unit Test Reports in der kontinuierlichen Integration. Die meisten Unit-Test- und Code-Coverage-Programme geben einfach jede Menge unlesbares XML aus. Mit ein paar einfachen XSLTs können Sie jedoch aus denselben Daten ein Dutzend nützlicher Berichte erstellen. Und andere Leute können diese Berichte wiederverwenden.

Jetzt können Sie diese in jeder Sprache schreiben, die das CI-Tool für Plugins verwendet. Wenn Sie diese Sprache jedoch nicht kennen (z. B. .NET-Entwickler mit Jenkins), müssen Sie sie nicht erlernen. Verwenden Sie einfach ein Plugin, das bereits eine XSLT auf eine XML-Datei anwendet, und schreiben Sie einige nützliche XSLTs.

pdr
quelle
6

Die Programmiersprachen werden immer eine Auswahl und Vielfalt bieten, und die Gründe, warum eine Sprache einer anderen vorgezogen wird, hängen nicht nur mit Vertrautheit und Mode zusammen, sondern auch mit objektiven Kriterien wie Funktionalität, Produktivität und Leistung. Niemand kann Mode vorhersagen, daher kann niemand zukünftige Trends in Programmiersprachen vorhersagen. Es gibt jedoch viele Leute, die die anfänglichen Lernbarrieren für XSLT überwunden haben und feststellen, dass es ein äußerst produktives Werkzeug für eine Vielzahl von Aufgaben ist (möglicherweise eine größere Vielfalt als jemals zuvor).

Für viele der Aufgaben, für die XSLT verwendet wird (und für die Aufgaben, die ich selbst verwende), wäre das Schreiben von Java- oder ASP-Code für diese Aufgabe eine entsetzliche Verschwendung des Budgets Ihres Arbeitgebers. Aber vielleicht auch nicht, wenn Sie Java gut und XSLT schlecht schreiben können.

Michael Kay
quelle
6

XSLT ist nicht für Menschen lesbar. Die Meta-Informationen (die Tags) nehmen zu viel Platz über den realen Informationen (Text, Xpath Requests) ein. Ein guter Code sollte wie eine Dokumentation aussehen und dies ist bei XSLT nicht der Fall. Es ist eher ein gutes Persistenzformat für Mapping-Tools.

Eine gute Transformationssprache sollte es ermöglichen, eine Vorschau des Transformationsergebnisses anzuzeigen und den Transformationsfluss (IF, ELSE, FOR, WHILE) gleichzeitig anzuzeigen. Dies ist wichtig für die Wartbarkeit. In Bezug auf diesen Aspekt sind Velocity oder GenearateXY besser als XSLT. GenerateXY ist sogar ein bisschen besser, da es die Vorschau und den Fluss trennt, während Sie bei Velocity leider die Einrückung der Vorschau aufheben müssten, um einen lesbaren Fluss zu erhalten.

Der einzig gute Punkt bei XSLT ist, dass es um Modularität geht, indem die "xsl: template" -Elemente verwendet und sogar missbraucht werden. Das Problem dabei ist, dass es gut für eine Datenverarbeitungssprache (Java, C, ...) ist, aber für eine Präsentationssprache sehr zweitrangig.

Abraham
quelle
4

Tatsächlich

Irgendetwas wird wahrscheinlich eines Tages XSLT ersetzen, da das Erlernen und Verwenden etwas umständlich ist. Derzeit ist jedoch keine Vorlage / Transformationssprache verfügbar, die in ihrer Implementierung so flexibel und "rein" ist.

XSL-T kann für verschiedene Zwecke verwendet werden:

  • Mithilfe einer Vorlage können Sie Inhalte im HTML-Format aus Daten "erstellen"
  • Sie können von einem XML-Format in ein anderes konvertieren
  • Sie können XML in ein anderes Format bearbeiten und möglicherweise eine Teilmenge anzeigen

Grundsätzlich ist dies jedoch dasselbe, nämlich die Umwandlung einer XML-Datendatei in eine andere. Schauen wir uns nun einige andere Tools an, die wir anstelle von XSLT verwenden könnten.

Wenn wir den Inhalt einer XHTML-Seite manipulieren wollten, könnten wir regexp verwenden, aber regexp ist für strukturelle Dinge chaotisch. Es scheint, um Zeichenfolgen zu manipulieren, aber ich würde es nicht verwenden, um ein Inhaltsverzeichnis für etwas zu erstellen oder es in einem anderen Layout darzustellen.

Weiter ist ASP.Net. Wir fügen unser Layout in unsere ASP-Seite ein und fügen Code für die dynamischen Teile ein. Eine andere Alternative besteht darin, auf den Layout-Teil zu verzichten und alles aus einer Datenbank zu generieren und mit C # die gewünschte Ausgabe zu erstellen.

Das Problem beim ersten Ansatz ist, dass es schwierig ist, von beschreibenden Daten zu tatsächlichen Inhalten zu wechseln. Wenn Sie eine Datendatei haben, die Telefonnummern enthält, die Sie mit Überschriften für jeden Buchstaben versehen möchten, zeigen Sie die Gesamtzahl der Einträge usw. an. Sie müssen einen Teil des Layouts in der Layoutdatei und einen Teil im Code haben, den Sie generieren . Eine andere Möglichkeit besteht darin, eine Art Web-Grid zu verwenden. Ich finde diese recht unübersichtlich, und plötzlich muss man lernen, wie das verdammte Grid funktioniert, wenn man nur bestimmte HTML-Daten ausgeben wollte.

Völlig dynamisch zu werden ist sicherlich eine Option, aber das ist auch ziemlich ungeschickt. Sogar im besten Fall, wenn Sie so etwas wie LINQ verwenden, müssen Sie den Programmcode auf ziemlich hässliche Weise mit der Ausgabe vermischen. Es gibt auch keine gute Möglichkeit, unstrukturierten Inhalt im rekursiven Dokumentstil richtig zu handhaben, wie es HTML normalerweise ist.

Mit XSLT können Sie einfach eine Vorlage für ein bestimmtes Tag erstellen, entweder wie es ist oder im Kontext des übergeordneten Tags, sodass es anders gerendert wird, wenn es beispielsweise von einem anderen übergeordneten Element stammt.

Eine ziemlich weitläufige Antwort, aber ja, ich denke, eine beschreibende Vorlagensprache ist von großem Wert, und XSLT ist die beste und standardisierteste, die wir bisher haben.

Homde
quelle
4

Das größte Manko von XSLT ist die Unfähigkeit (bei jeder tatsächlichen Implementierung), die Menge des Dokuments zu minimieren, die zur effizienten Verarbeitung gleichzeitig im Speicher aufbewahrt werden muss. Stattdessen wird das gesamte Dokument in eine Form der DOM-Darstellung eingelesen und die Verarbeitung erfolgt dagegen. Wenn das Dokument sehr groß ist, sind es auch die Speicheranforderungen. Viele Stylesheets benötigen jedoch immer nur das aktuelle Tag und einige andere, z. B. die Vorfahren des Tags, und können daher mit minimalem Arbeitsspeicher und effizientem Streaming verarbeitet werden.

Ja, in Bezug auf eine Sprache ist es komisch, aber das ist nur eine Eintrittsbarriere. Wenn Sie sich mit XSLT auskennen, ist dies oft einfacher als die Alternativen. Wenn Sie jedoch große Dokumente (oder viele Dokumente gleichzeitig verarbeitet werden) haben, führt die Speicherauswirkung von XSLT häufig zu anderen, zeitaufwendigeren Alternativen.

Jess Holle
quelle
3

Tatsächlich halte ich die Verwendung von XSL für effizienter als eine andere Sprache für die Darstellung von Daten. Beispielsweise können Sie mit XSL-FO eine XML-Datei als PDF-Datei präsentieren und jeden Zoll steuern. Wenn Sie jedoch beispielsweise mit RDLC (.NET) arbeiten, werden Sie feststellen, dass es sehr schwierig ist, genau das zu präsentieren, was Sie möchten.

Auch die Entwicklung / Korrektur ist recht einfach, da in XSL jedes Element eine eigene Vorlage hat. Ich denke, dass die Erweiterung von XSL wichtiger ist als XSLT und XSL-FO. Aus diesem Grund wird diese Sprache auch in Zukunft verwendet (aber ich hoffe wirklich, dass dies stabiler und weniger komplex ist).

Yayaman
quelle
2

Ich arbeite für ein Datenintegrationsunternehmen und wir verwenden XSLT mit unseren proprietären Tools als großartige Lösung, die XML zu HTML / XML / ASCII umfasst.

Bryan Harrington
quelle