it-swarm.dev

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

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

Aber wir haben jetzt Ersatz für alles. HTML kann bequem mit Programmiersprachen wie ASP.Net erstellt werden. XML kann in allen Standardsprachen gelesen und verwaltet werden. Da das Programmieren in XSLT etwas komplex ist, würde jeder es vorziehen, an den neuesten Programmiersprachen zu arbeiten.

Nun meine Frage: Wird XSLT in Zukunft eine wichtige Wahl sein, ohne die Tatsache zu berücksichtigen, dass bereits entwickeltes XSLT beibehalten wird? Kann ich neuen Programmierern empfehlen, XSLT zu lernen?

28

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

  • ETL-Software ( Extrahieren, Transformieren, Laden ) kann in einigen Fällen XSLT verwenden. Beispielsweise kann es eine gute Wahl sein, wenn sowohl extrahierte als auch zu ladende Daten in einem XML-Format vorliegen und die Transformation geändert werden kann, 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 darzustellen¹. In Windows Live Messenger wird beispielsweise die Ablaufverfolgung von Nachrichten als XML gespeichert. Wenn Sie jedoch den Verlauf 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 Zugriff auf XML gewähren, wenn die Seiten der Website programmgesteuert verwendet werden sollen². Es ist irgendwie schöner als HTML-Parser zu verwenden, zumal HTML-Code jederzeit geändert werden kann.

  • XSLT ermöglicht bei Verwendung in Websites eine strikte Trennung zwischen HTML und CodeBehind, wodurch ein Entwickler für CodeBehind und ein anderer Entwickler für HTML/CSS eingestellt werden kann. Siehe Punkt 1 in meine Antwort auf eine andere Frage .

Wird XSLT in Zukunft eine wichtige 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 lernen? Sicher! Nicht nur XSLT kann unter bestimmten Umständen verwendet werden, wenn andere Ansätze schwieriger wären, sondern XSLT hat auch einen sehr spezifischen Ansatz, den andere Sprachen nicht haben.


¹ Damit meine ich, dass XML nicht wirklich lesbar ist: Wenn Sie eine Person, die nicht in der IT arbeitet, bitten, XML zu lesen, 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 es dann entweder über XSLT in HTML umzuwandeln oder den Bot direkt auf das XML zugreifen zu lassen.

29

XSLT ist so ziemlich tot, weil es nur noch wenige Enthusiasten verwenden. Es gibt jedoch keine echte Alternative dafür. Wenn Sie sich nur auf einen einzelnen Anwendungsfall konzentrieren, z. B. das Rendern von HTML-Seiten aus semantischen Dokumenten, finden Sie bessere Tools. Wenn Sie nach Vorlagengeneratoren für die Codegenerierung suchen, gibt es wieder bessere Tools. Gleiches gilt für die Dokumententransformation.

Wenn Sie jedoch nach einem Tool suchen, das all diese Anwendungsfälle auf allen Plattformen recht gut unterstützt, sind die Auswahlmöglichkeiten sehr begrenzt. Wenn Sie bereits über ein XML-Dokument verfügen und es in etwas umwandeln müssen, 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 in wenigen Tagen, vielleicht Wochen lernen. Es wird dir nicht schaden, Erfahrungen aus erster Hand zu machen. Probieren Sie es einfach aus. Es lohnt sich zumindest, diese Art von Muster (regelbasierte Transformationen) zur späteren Verwendung in Ihrem Kopf zu speichern. Dies allein rechtfertigt das Erlernen von XSLT.

12
Michael

Ja.

Nehmen wir ein gutes Beispiel: Unit-Test-Berichte in kontinuierlicher Integration. Die meisten Unit-Test- und Code-Coverage-Programme geben einfach Tonnen von unlesbarem XML aus. Mit ein paar einfachen XSLTs können Sie jedoch ein Dutzend nützlicher Berichte aus denselben Daten erstellen. Und andere Personen 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. Sie sind ein .NET-Entwickler, der Jenkins verwendet), müssen Sie sie nicht lernen. Verwenden Sie einfach ein Plugin, das bereits ein XSLT auf eine XML-Datei anwendet, und schreiben Sie einige nützliche XSLTs.

9
pdr

Hmm, ich frage mich, ob die High-Level-APIs, die HTML aus Code erstellen, XSLT "unter der Haube" verwenden ...

XSLT wird häufig verwendet, wenn ich XML von einem Quellformat in eine Vielzahl anderer umwandle. Es kann auch verwendet werden, um XML in eine Nicht-XML-Ausgabe umzuwandeln. Ich habe nicht viel davon getan, aber ich habe gehört, dass es unter anderem auf PDF und PostScript) abzielt.

XSLT ist nicht für Menschen lesbar. Die Metainformationen (die Tags) nehmen zu viel Platz über den realen Informationen (Text, xpath-Anforderungen) ein. Ein guter Code sollte wie eine Dokumentation aussehen, und dies ist bei XSLT ziemlich 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 gleichzeitig den Transformationsfluss (IF, ELSE, FOR, WHILE) anzuzeigen. Dies ist wichtig für die Wartbarkeit. In Bezug auf diesen Aspekt sind Geschwindigkeit oder GenearateXY besser als XSLT. GenerateXY ist sogar ein bisschen besser, da es die Vorschau und den Fluss trennt, während Sie mit Velocity die Einrückung der Vorschau leider unterbrechen müssten, um einen lesbaren Fluss bereitzustellen.

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

6
abraham

Es wird immer eine Auswahl und Vielfalt in den Programmiersprachen geben, und die Gründe, warum eine gegenüber einer anderen bevorzugt wird, hängen ebenso mit Vertrautheit und Mode zusammen wie mit objektiven Kriterien wie Funktionalität, Produktivität und Leistung. Niemand kann Mode vorhersagen, also kann niemand zukünftige Trends in Programmiersprachen vorhersagen. Es gibt jedoch viele Menschen, 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 ich sehe, dass XSLT verwendet wird (und für die Aufgaben, die ich für mich selbst verwende), würde das Schreiben von Java oder ASP Code) für die Ausführung des Jobs erfolgen Seien Sie eine entsetzliche Verschwendung des Budgets Ihres Arbeitgebers. Aber vielleicht auch nicht, wenn Sie gut schreiben können Java und schlecht darin, XSLT zu schreiben).

6
Michael Kay

Der größte Fehler von XSLT besteht darin, dass es (in jeder realen Implementierung) nicht möglich ist, die Menge des Dokuments zu minimieren, die für eine effiziente Verarbeitung gleichzeitig im Speicher gehalten werden muss. Stattdessen wird das gesamte Dokument in eine Form der DOM-Darstellung eingelesen und dagegen verarbeitet. Wenn das Dokument sehr groß ist, sind auch die Speicheranforderungen hoch. Viele Stylesheets benötigen jedoch eindeutig nur das aktuelle Tag und einige andere, z. Die Vorfahren des Tags können zu jedem Zeitpunkt mit minimalem Speicher und effizientem Streaming verarbeitet werden.

Ja, in Bezug auf eine Sprache ist es komisch, aber das ist nur eine Eintrittsbarriere. Wenn Sie XSLT kennen, ist es oft einfacher als die Alternativen - aber wenn Sie große Dokumente haben (oder viele Dokumente gleichzeitig verarbeitet werden), erzwingt die Speicherauswirkung von XSLT oft andere, zeitaufwändigere Alternativen.

4
Jess Holle

in der Tat

Etwas wird XSLT wahrscheinlich eines Tages ersetzen, da es etwas umständlich zu lernen und zu verwenden ist. Derzeit ist jedoch keine Vorlagen-/Transformationssprache verfügbar, die in ihrer Implementierung so flexibel und "rein" ist.

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

  • Sie können Inhalte im HTML-Format aus Daten mithilfe einer Vorlage "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 alles dasselbe, jedoch die Umwandlung einer XML-Datendatei in eine andere. Schauen wir uns nun einige verschiedene 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 für die Manipulation von Zeichenfolgen, aber ich würde es nicht verwenden, um ein Inhaltsverzeichnis für etwas zu erstellen oder es in einem anderen Layout zu präsentieren.

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

Das Problem beim ersten Ansatz ist, dass es umständlich ist, von beschreibenden Daten zu tatsächlichen Inhalten zu wechseln. Wenn Sie eine Datendatei mit Telefonnummern haben, die Sie mit Überschriften für jeden Buchstaben präsentieren möchten, zeigen Sie eine Gesamtzahl von Einträgen 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 ist die Verwendung einer Art Web-Grid-Put. Ich finde diese ziemlich chaotisch und plötzlich muss man lernen, wie das verdammte Grid funktioniert, wenn man nur ein bestimmtes HTML ausgeben möchte, wenn man die Daten berücksichtigt.

Völlig dynamisch zu werden ist sicherlich eine Option, aber das ist auch ziemlich ungeschickt. Selbst 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 rekursiven Inhalt im Dokumentstil, wie es HTML normalerweise ist, richtig zu behandeln.

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

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

4
Homde

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

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. Deshalb wird diese Sprache auch in Zukunft verwendet (aber ich hoffe wirklich, dass sie stabiler und weniger komplex sein wird).

3
yayaman

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

2