Frage

Vor einiger Zeit habe ich an einem Projekt begonnen, wo ich eine html-esque XML-Schema so konzipiert, dass Autoren ihre Inhalte (Bildungskursmaterial) in einem vereinfachten Format, die dann in HTML über XSLT transformiert werden würde schreiben konnte. Ich spielte (gekämpft) mit ihm für eine Weile und haben es zu einem sehr einfachen Niveau, aber dann war auch genervt von den Einschränkungen war ich der Begegnung (welche gut gewesen Grenzen meines Wissens haben) und wenn ich lese ein Blog darauf hindeutet, zu Graben XSLT und nur schreiben sie Ihre eigene XML-to-was-Parser in der Sprache Ihrer Wahl, ich sprang eifrig auf, dass und es ist brillant ausgearbeitet.

Ich arbeite immer noch daran bis heute ( Ich bin in diesem Augenblick auf sie eigentlich sollte zu arbeiten, anstatt SO spielen auf ), und ich bin mehr und mehr Dinge zu sehen, die mache ich denke, dass die Entscheidung XSLT zu Graben ein gutes war.

Ich weiß, dass XSLT seinen Platz hat, dass es eine akzeptierte Norm ist, und dass, wenn jeder seine eigenen Dolmetscher ist das Schreiben, 90% von ihnen wird auf TheDailyWTF . Aber da es sich um eine funktionalen Formensprache ist anstelle des Verfahrens Stil, die meisten Programmierer mit vertraut sind, für jemanden an einem Projekt wie mein eigenes einsteigen, würden Sie empfehlen, sie gehen den Weg hinunter, die ich tat, oder es durchhalten mit XSLT

War es hilfreich?

Lösung

Vorteile von XSLT:

  • Domain-spezifisch für XML, so zum Beispiel keine Notwendigkeit wörtliche XML in der Ausgabe zu zitieren.
  • Unterstützung XPath / XQuery, die eine nette Art und Weise Dom abzufragen, auf die gleiche Art und Weise sein, dass reguläre Ausdrücke eine schöne Möglichkeit, Strings abfragen können.
  • Funktionssprache.

Nachteile von XSLT:

  • Kann obszön umfangreich sein - Sie müssen nicht wörtlich XML zitieren, was effektiv bedeutet, dass Sie Code haben zu zitieren. Und nicht in einer hübschen Art und Weise. Aber dann wieder, es ist nicht viel schlechter als die typische SSI.
  • Ist dies nicht tut bestimmte Dinge, die die meisten Programmierer für selbstverständlich halten. Zum Beispiel String-Manipulation kann eine lästige Pflicht. Dies kann zu einem „unglücklichen Momenten“ führen, wenn Anfänger Design-Code, dann wie wild im Internet nach Hinweisen suchen, wie Funktionen zu implementieren, sie annahmen, nur da sein würde und gab mir keine Zeit zu schreiben.
  • Funktionssprache.

Eine Möglichkeit, prozedurale Verhalten zu bekommen, nebenbei bemerkt, ist an der Kette mehr zusammen verwandelt. Nach jedem Schritt haben Sie einen brandneuen DOM zu arbeiten, die in diesem Schritt die Änderungen widerspiegelt. Einige XSL-Prozessoren haben Erweiterungen effektiv dies in einer verwandeln, aber ich vergesse die Details.

Also, wenn Ihr Code meist ausgegeben und nicht viel Logik ist, XSLT kann eine sehr nette Art und Weise sein, sie auszudrücken. Wenn es eine Menge von Logik ist, aber meistens von Formen, die in XSLT gebaut werden (alle Elemente auswählen, die wie blah aussieht, und für jeden Ausgang bla), ist es wahrscheinlich ziemlich eine freundliche Umgebung sein. Wenn Sie Lust auf Denken XML-ishly zu allen Zeiten, dann geben XSLT 2 ein zu gehen.

Ansonsten würde ich sagen, dass, wenn Ihre bevorzugte Programmiersprache eine gute DOM-Implementierung unterstützt XPath hat und mit dem Sie Dokumente in einer sinnvollen Weise zu bauen, dann gibt es nur wenige Vorteile für XSLT verwenden. Bindungen zu libxml2 und gdome2 sollten gut tun, und es ist keine Schande, zu Allzweck- in Aufkleben Sprachen, die Sie gut kennen.

Heimisches XML-Parser sind in der Regel entweder unvollständig (in dem Fall, dass Sie einen Tag kommen unstuck werden) oder auch nicht viel kleiner als etwas, das man aus dem Regal hätte ausstieg (in diesem Fall sind Sie wahrscheinlich Ihre Zeit verschwenden) und geben Sie eine beliebige Anzahl von Möglichkeiten, schwere Sicherheitsprobleme rund um böswillige Eingang einzuführen. Schreiben Sie nicht ein, es sei denn, Sie wissen genau, was Sie tun, es zu gewinnen. Was nicht zu sagen, wird man nicht einen Parser für etwas einfacher als XML als Eingabeformat schreiben kann, wenn Sie nicht alles, was die XML-Angebote.

Andere Tipps

So viel Negativität!

Ich habe jetzt ein paar guten Jahre XSLT benutzen, und liebe es wirklich. Der Schlüssel, was Sie erkennen müssen, ist, dass es ist keine Programmiersprache, es ist eine Template-Sprache (und in dieser Hinsicht finde ich es unbeschreiblich überlegen asp.net / Spieß).

XML ist das de-facto-Datenformat der Web-Entwicklung heute, seien es Konfigurationsdateien, Rohdaten oder im Speicher reprsentation. XSLT und XPath geben Sie eine enorm leistungsstark und sehr effiziente Möglichkeit, dass die Daten in jedes Ausgabeformat zu transformieren Sie sofort vielleicht gefallen, von Ihnen, dass MVC Aspekt gibt die Präsentation von den Daten zu trennen.

Dann gibt es die Utility-Fähigkeiten: Auswaschung Namespaces, Erkennen disparate Schemadefinitionen, Zusammenführen von Dokumenten

.

Es muss besser mit XSLT zu tun als Ihre eigenen in-house Methoden zu entwickeln. Mindestens XSLT ist ein Standard und etwas, das Sie mieten können, und wenn es jemals wirklich ein Problem für Ihr Team ist, ist es sehr Natur Sie lassen würde halten die meisten Ihr Team mit nur XML arbeiten.

Eine reale Welt Use Case: Ich schrieb eine App, die im gesamten System XML-Dokumente in-Speicher verarbeitet und transformiert zu JSON, HTML oder XML als vom Endbenutzer angefordert. Ich hatte eine ziemlich zufällige Anfrage als Excel-Daten zur Verfügung zu stellen. Ein ehemaliger Kollege hatte etwas ähnliches programatically getan, aber es benötigt, um ein Modul von einigen Klassendateien und dass der Server hatte MS Office installiert! Es stellte sich heraus Excel hat eine XSD. Neue Funktionen mit einem Minimum an Basiscode Auswirkungen in 3 Stunden

Ich persönlich denke, es ist eines der saubersten Dinge, die ich in meiner Karriere erlebt habe, und ich glaube, die ganze es ist offensichtlich Probleme (Debugging, String-Manipulation, Programmierstrukturen) ist bis zu einem fehlerhaften Verständnis des Werkzeugs.

Natürlich, ich glaube fest daran, es ist "wert".

Ich habe eine Vorspannung hier zugeben, weil ich XSLT für ein Leben lehren. Aber, könnte es sich lohnen, die Bereiche abdecken aus, dass ich meine Studenten sehen arbeiten in Sie teilen sich in drei Gruppen im Allgemeinen.. Publishing, Banken und Web

Viele der Antworten könnte so weit wie folgt zusammengefasst werden: „Es ist nicht gut für die Erstellung von Websites“ oder „es ist nichts, wie die Sprache X“. Viele Tech-Leute gehen durch ihre Karrieren ohne Exposition gegenüber funktionalen / deklarativen Sprachen. Wenn ich unterrichte, der erfahrenen Java / VB / C / etc Volk diejenigen sind, die Probleme mit der Sprache hat (Variablen sind Variablen im Sinne der Algebra nicht prozeduralen Programmierung zum Beispiel). Das ist viele der Menschen hier zu beantworten. - Ich habe noch nie mit Java bekommen, aber ich werde nicht die Mühe, die Sprache Kritik wegen, dass

In vielen Fällen ist es ein ungeeignetes Werkzeug für die Erstellung von Websites - ein Allzweck-Programmiersprache besser sein kann. Ich brauche oft sehr große XML-Dokumente zu nehmen und sie im Web präsentieren; XSLT macht, dass trivial. Die Studenten, die ich in diesem Raum sehen neigen Datensätze zu verarbeiten und sie im Web zu präsentieren. XSLT ist sicherlich nicht das einzige einsetzbare Werkzeug in diesem Raum. viele von ihnen den DOM verwenden jedoch, dies zu tun und XSLT ist sicherlich weniger schmerzhaft.

Die Bank Studenten Ich benutze ein Datapower-Box im Allgemeinen zu sehen. Dies ist ein XML-Gerät und es wird benutzt, um zwischen den Diensten ‚sprechen‘ verschiedenen XML-Dialekten zu sitzen. Transformation von einer XML-Sprache in einer anderen ist fast trivial in XSLT und die Anzahl der Studenten meine Kurse zu diesem Thema teilnehmen steigen.

Der letzte Satz von Studenten, die ich von einem Verlag Hintergrund kommen sehen (wie ich). Diese Menschen neigen dazu immense Dokumente in XML haben (glauben Sie mir, Veröffentlichung als Industrie wird immer sehr in XML - technische Publikationen hat es seit Jahren und Handel publishing erhält es jetzt). Diese Dokumente werden müssen, die Verarbeitung (DocBook zu ePub in den Sinn kommt hier).

Jemand oben kommentierte, dass Skripte unter 60 Zeilen zu neigen oder sie werden unhandlich. Wenn es unhandlich geworden ist, sind die Chancen der Codierer nicht wirklich auf die Idee gekommen ist - XSLT eine ganz andere Mentalität von vielen anderen Sprachen ist. Wenn Sie nicht die Mentalität bekommen wird es nicht funktionieren.

Es ist sicherlich nicht eine aussterbende Sprache (die Menge der Arbeit, die ich mir sagt bekommen, dass). Gerade jetzt, es ist ein bisschen ‚stecken‘, bis Microsoft ihre (sehr spät) Implementierung von XSLT beendet 2. Aber es ist immer noch da und scheint aus meiner Sicht noch stark werden.

Wir verwenden XSLT in großem Umfang für Dinge wie Dokumentation und machen einige komplexe Konfigurationseinstellungen vom Benutzer gewartet werden.

Für die Dokumentation verwenden wir eine Menge von DocBook, die ein XML-basierten Format. Auf diese Weise können wir speichern und unsere Dokumentation mit allen unseren Quellcode zu verwalten, da die Dateien Klartext sind. Mit XSLT können wir leicht unsere eigenen Dokumentationsformate bauen, so dass wir beide, um den Inhalt in allgemeiner Weise automatisch generieren, und stellen Sie die Inhalte besser lesbar. Zum Beispiel, wenn wir Release Notes veröffentlichen, können wir XML erstellen, die so etwas wie folgt aussieht:

<ReleaseNotes>
    <FixedBugs>
        <Bug id="123" component="Admin">Error when clicking the Foo button</Bug>
        <Bug id="125" component="Core">Crash at startup when configuration is missing</Bug>
        <Bug id="127" component="Admin">Error when clicking the Bar button</Bug>
    </FixedBugs>
</ReleaseNotes>

Und dann mit Hilfe von XSLT (die die oben DocBook verwandelt) uns mit schönen Release Notes (PDF oder HTML in der Regel) landen, wo Bug-IDs zu unseren Bug-Tracker automatisch verknüpft ist, Fehler durch die Komponente gruppiert sind, und das Format der alles ist perfekt im Einklang. Und das oben XML kann durch Abfragen unseres Bug-Tracker automatisch generiert werden, was zwischen den Versionen geändert hat.

Der andere Ort, an den wir XSLT haben festgestellt, nützlich zu sein, ist tatsächlich in unserem Kernprodukt. Manchmal, wenn sie mit Systemen von Drittanbietern eine Schnittstelle müssen wir irgendwie Daten in einer komplexen HTML-Seite verarbeiten. Parsen von HTML ist hässlich, so füttern wir die Daten durch so etwas wie tagsoup (die erzeugt richtige SAX XML Events, im wesentlichen, dass sie uns mit dem HTML umgehen, als ob es richtig XML geschrieben wurden), und dann können wir einige XSLT dagegen zu drehen, um die Daten in einem „bekannten stabilen“ Format, das wir können mit laufen tatsächlich funktionieren. Durch die Trennung, dass die Umwandlung in eine XSLT-Datei aus, das bedeutet, dass, falls und wenn die HTML-Formatänderungen, die Anwendung selbst muss nicht aktualisiert werden, anstelle der Endbenutzer kann einfach bearbeiten die XSLT selbst einreichen, oder wir können eine E-Mail sie eine aktualisierte XSLT-Datei, ohne das gesamte System aufgerüstet werden müssen.

Ich würde sagen, dass für Web-Projekte gibt es bessere Möglichkeiten gibt heute die Sichtseite als XSLT zu handhaben, sondern als Technologie gibt es auf jeden Fall verwendet für XSLT. Es ist nicht die einfachste Sprache der Welt zu verwenden, aber es ist definitiv nicht tot, und aus meiner Sicht nach wie vor hat viele gute Anwendungen.

XSLT ist ein Beispiel für eine deklarative Programmierung Sprache.

Weitere Beispiele für deklarative Programmiersprachen umfassen reguläre Ausdrücke, Prolog und SQL. Alle diese sind sehr ausdrucksstark und kompakt, und in der Regel sehr gut gestaltet und leistungsstark für die Aufgabe, für die sie bestimmt sind.

Allerdings, Software-Entwickler hassen im Allgemeinen solche Sprachen, weil sie so verschieden von mehr Mainstream-OO oder Verfahrenssprachen sind, dass sie hart sind, zu lernen und zu debuggen. Ihre kompakte Natur im Allgemeinen macht es sehr einfach, eine Menge Schaden versehentlich zu tun.

So, während XSLT ist ein effizienter Mechanismus Daten in Präsentation zu fusionieren, scheitert es in der Einfachheit der Benutzung Abteilung. Ich glaube, das ist, warum hat es nicht wirklich gefangen.

Ich erinnere mich an all den Hype um XSLT, wenn der Standard neu veröffentlicht wurde. Die ganze Aufregung um die Lage, einen ganzen HTML-UI mit einem ‚einfachen‘ verwandeln gebaut.

Seien sie ehrlich, ist es schwer, fast unmöglich zu debuggen zu verwenden, oft unerträglich langsam. Das Endergebnis ist fast immer etwas eigenartig und weniger als ideal.

ich früher mein eigenes Bein abnagen als einen XSLT zu verwenden, während es gibt bessere Möglichkeiten, Dinge zu tun. Dennoch hat es seine Plätze, einfach seine gut für Aufgaben verwandeln.

Ich habe XSLT (und auch XQuery) in großen Umfang für verschiedene Dinge verwendet - C ++ Code als Teil des Build-Prozesses zu erzeugen, die Dokumentation von doc Kommentaren zu produzieren, und innerhalb einer Anwendung, die mit XML im Allgemeinen und XHTML arbeiten mußte in insbesondere eine ganze Menge. Der Code-Generator insbesondere betrug über 10.000 Zeilen XSLT 2.0 Code gespreizt um etwa ein Dutzend separate Dateien (es eine Menge Dinge tat - Header für Kunden, Remote Proxies / Stubs, COM-Wrapper, .NET-Wrapper, ORM - um ein paar). Ich erbte es einen anderen Kerl über die nicht wirklich die Sprache gut verstanden haben, und die älteren Bits waren folglich eine ziemlich Chaos. Neuere Sachen, die wir geschrieben wurden meist gesund und lesbar gehalten, aber, und ich erinnere mich noch keine besonderen Probleme mit, dass zu erreichen. Es war sicher nicht schwerer als es für C ++ zu tun.

Apropos Versionen, mit XSLT zu tun 2.0 hilft auf jeden Fall Sie gesund zu halten, aber 1.0 ist noch für einfachere Transformationen in Ordnung. In seiner Nische, ist es ein äußerst nützliches Werkzeug, und die Produktivität, die Sie von bestimmten domänenspezifischen Funktionen zu erhalten (was am wichtigsten ist, dynamisch-Versand per Template-Matching) ist schwer zu entsprechen. Trotz der empfundenen Wortreichtum von XSLT XML-basierte Syntax, die gleiche Sache in LINQ to XML (auch in VB mit XML-Literale) war in der Regel mehrmals länger. Oft jedoch wird es undeserved flack wegen unnötiger Verwendung von XML in einigen Fällen an erster Stelle.

Um es zusammenzufassen: es ist ein unglaublich nützliches Werkzeug in einer Werkzeugkiste haben, aber es ist ein sehr spezialisiertes, so ist es gut, so lange, wie Sie sie richtig einsetzen und für den vorgesehenen Zweck. Ich wünschte wirklich, es war eine richtige native .NET-Implementierung von XSLT 2.0.

Ich benutze XSLT (mangels besserer Alternative), nicht aber für die Präsentation, nur für die Transformation:

  1. Ich schreibe kurze XSLT-Transformationen Massen Änderungen auf unseren Maven pom.xml Dateien zu tun.

  2. Ich habe eine Pipeline von Transformationen geschrieben XML-Schema von XMI (UML-Diagramm) zu erzeugen. Er arbeitete für eine Weile, aber es kam schließlich zu komplex, und wir hatten es hinter der Scheune herauszunehmen.

  3. Ich habe Transformationen verwendet, um XML-Schema Refactoring.

  4. Ich habe um ein paar Einschränkungen in XSLT gearbeitet, indem sie es mit Hilfe eines XSLT zu erzeugen, um die eigentliche Arbeit zu tun. (Schon mal versucht, eine XSLT zu schreiben, die eine Ausgabe mit Namensräume erzeugt, die erst zur Laufzeit nicht bekannt sind?)

ich immer wieder kommen, um es zurück, weil es eine bessere Arbeit Round-Tripping hat die XML-es ist die Verarbeitung als andere Ansätze, die ich versucht habe, die unnötig verlustbehaftete schienen haben oder einfach XML falsch verstehen. XSLT ist unangenehm, aber ich finde Sauerstoff es erträglich macht.

Das heißt, ich bin der Untersuchung mit Clojure (Lispeln) Transformationen von XML ausführen, aber ich haven‘ t weit genug bekommen noch wissen, ob dieser Ansatz wird mir Vorteile bringen.

Persönlich habe ich XSLT in einem ganz anderen Kontext. Das Computerspiel, dass ich zu der Zeit verwendet Tonnen UI Seiten arbeiten an definierten XML. Während eines großen refactor kurz nach einer Freilassung wollten wir die Struktur dieser XML-Dokumente ändern. Wir haben das Eingabeformat des Spiels folgt einer viel bessere und Schema bewusst Struktur.

XSLT schien die perfekte Wahl für diese Übersetzung aus dem alten Format -> Neuem Format. Innerhalb von zwei Wochen hatte ich eine Arbeits Umwandlung von alten zu neuen für unsere Hunderte von Seiten. Ich war auch in der Lage, es zu benutzen viele Informationen über das Layout unserer UI Seiten zu extrahieren. Ich habe eine Liste, welche Komponenten in denen eingebettet waren relativ leicht, die ich dann XSLT verwendet, um in unsere Schema-Definitionen zu schreiben.

Auch aus einem C ++ Hintergrund kommen, es war eine sehr unterhaltsame und interessante Sprache zu beherrschen.

Ich denke, dass als ein Werkzeug, XML von einem Format in ein anderes zu übersetzen es ist fantastisch. Es ist jedoch nicht die einzige Möglichkeit, einen Algorithmus zu definieren, die XML als Eingabe nimmt und Ausgänge Etwas . Wenn Ihr Algorithmus hinreichend komplex ist, dass die Tatsache, die XML-Eingabe wird zu Ihrer Wahl des Werkzeugs irrelevant ist - d. H Ihre eigene Rolle in C ++ / Python / was auch immer

Besondere an Ihrem Beispiel würde ich mir vorstellen, die beste Idee, Ihren eigenen XML> XML konvertieren zu schaffen wäre, die Ihre Business-Logik folgt. Als nächstes schreiben einen XSLT-Übersetzer, die gerade Formatierung kennt und tut nichts clever. Das könnte ein schöner Mittelweg sein, aber es hängt total, was Sie tun. einen XSLT-Übersetzer am Ausgang macht es einfacher, alternative Ausgabeformate zu schaffen -. bedruckbar, für Handys, etc.

Ja, ich benutze es viel. Durch die Verwendung verschiedene XSLT-Dateien, kann ich die gleiche XML-Quelle verwenden, um mehr polyglott (X) HTML-Dateien (präsentieren die gleichen Daten auf unterschiedliche Weise), einen RSS-Feed, einen Atom-Feed, einen RDF-Deskriptordatei und Fragment eines Site-Map zu erstellen .

Es ist kein Allheilmittel. Es gibt Dinge, die es gut tut, und Dinge, die es nicht gut tun, und wie alle anderen Aspekte der Programmierung, es geht um das richtige Werkzeug für den richtigen Job verwenden. Es ist ein Werkzeug, das in der Toolbox wert ist, die aber es sollte nur verwendet werden, wenn es angebracht ist, dies zu tun.

Ich würde empfehlen, auf jeden Fall dabei bleiben aus. Vor allem, wenn Sie Visual Studio verwenden, die in Bearbeitung, Anzeige und Debugging-Tools für XSLT gebaut hat.

Ja, es ist ein Schmerz, während Sie lernen, aber die meisten der Schmerz ist mit Vertrautheit zu tun. Der Schmerz schmälert, wie Sie die Sprache zu lernen.

W3schools hat zwei Artikel, die von besonderem Wert sind: http://www.w3schools.com/xpath/xpath_functions.asp http://www.w3schools.com/xsl/xsl_functions.asp

Ich habe XSLT gefunden ziemlich schwierig zu sein, zu arbeiten.

Ich habe Erfahrung auf einem System arbeiten etwas ähnlich wie die, die Sie beschreiben. Mein Unternehmen stellte fest, dass die Daten, die wir von der „mittleren Ebene“ Rückkehr wurden in XML war, und dass die Seiten in HTML gerendert werden sollten, die auch XHTML sein könnte, und sie hatte gehört, dass XSL ein Standard für die Transformation zwischen XML war Formate. So sind die „Architekten“ (von denen ich die Leute meinen, die tief Design Gedanken denken, aber anscheinend nie Code) entschieden, dass unsere Front Tier durch das Schreiben von XSLT-Skripten implementiert werden würde, die die Daten in das XHTML für die Anzeige umgewandelt.

gedreht Die Wahl katastrophal erwiesen. XSLT, es stellt sich heraus, ist ein Schmerz zu schreiben. Und so alle unsere Seiten waren schwer zu schreiben und zu halten. Wir würden viel besser getan haben, um JSP verwendet zu haben (dies war in Java) oder einen ähnlichen Ansatz, der eine Art von Markup (spitzen Klammern) für das Ausgabeformat (die HTML) und eine andere Art von Markup (wie <% ... %>) für die Meta-Daten. Die verwirrende Sache über XSLT ist, dass es in XML geschrieben, und es übersetzt von XML in XML ... es ziemlich schwierig ist, alle 3 verschiedenen XML-Dokumente direkt im Kopf zu behalten.

ist Ihre Situation etwas anders: anstatt jede Seite in XSLT-Authoring wie ich, Sie brauchen nur ein Stück Code in XSLT zu schreiben (der Code von Vorlagen zu konvertieren anzuzeigen). Aber es klingt wie Sie in die gleiche Art von Schwierigkeiten laufen haben, die ich getan habe. Ich würde sagen, dass eine einfache XML-basierte DSL (Domain Specific Language) zu interpretieren versuchen, wie Sie tun, ist nicht eine der Stärken von XSLT. (Obwohl es die Arbeit tun können ... schließlich ist es Turing abgeschlossen!)

Wenn aber was hatten Sie ist einfacher: Sie Daten in einem XML-Format haben und wollten einfach Änderungen machen - keine vollständigen Seitenbeschreibungs DSL, aber einige einfache einfache Modifikationen, dann XSLT ist ein ausgezeichnetes Werkzeug für dass Zweck. Es ist deklarative (nicht verfahrens) Natur ist eigentlich ein Vorteil für diesen Zweck.

- Michael Chermside

XSLT ist schwierig, mit zu arbeiten, aber wenn Sie es erobern werden Sie ein sehr gründliches Verständnis der DOM und das Schema haben. Wenn Sie auch XPath, dann sind Sie auf Ihrem Weg der funktionalen Programmierung zu lernen, und dies wird über die Lösung von Problemen auf neue Techniken und Möglichkeiten aus. In einigen Fällen ist sukzessive Transformation stärker als Verfahrenslösungen.

Ich benutze XSLT ausführlich, für ein benutzerdefinierten MVC Stil Front-End. Das Modell ist „serialisiert“ in XML (nicht über XML serializaiton) und dann umgewandelt via XSLT in HTML. Der Vorteil gegenüber ASP.NET liegt in der natürlichen Integration mit XPath und den strengeren Wohlgeformtheits- Anforderungen (es ist viel einfacher zu Dokumentstruktur in Xslt an der Vernunft als in den meisten anderen Sprachen).

Leider ist die Sprache mehrere Einschränkungen enthält (zum Beispiel die Möglichkeit, die Ausgabe eines anderen Transformation zu transformieren), das bedeutet, dass es gelegentlich frustrierend, mit zu arbeiten.

Dennoch ist die leicht erreichbar, stark erzwungene Trennung von Bedenken, die es Zuschüsse sind nicht etwas, sehe ich eine andere Technologie jetzt bieten -. So für Dokument ist es noch etwas verwandelt würde ich empfehlen

I verwendet XML, XSD und XSLT auf einem Integrationsprojekt zwischen sehr dis-ähnlichen DB-Systemen irgendwann im Jahr 2004. Ich hatte XSD und XSLT von Grunde auf lernen, aber es war nicht schwer. Die große Sache über diese Tools war, dass es mir ermöglicht, Daten zu schreiben unabhängige C ++ Code, auf XSD und XSLT unter Berufung zu validieren / überprüfen und dann die XML-Dokumente umwandeln. Ändern Sie das Datenformat des XSD und XSLT-Dokumente nicht den C ++ Code, den die Xerces-Bibliotheken verwendet wird.

Für Interesse: die wichtigsten XSD war 150KB und die durchschnittliche Größe des XSLT war <5KB IIRC

.

Der andere große Vorteil ist, dass die XSD ist eine Spezifikation Dokument, das die XSLT basiert. Die beiden arbeiten in Harmonie. Und Spezifikationen sind selten in der Softwareentwicklung in diesen Tagen.

Auch wenn ich nicht zu viel Mühe haben die deklarative Natur XSD und XSLT Lernen Ich fand, dass andere C / C ++ Programmierer auf die deklarative Weise große Mühe hatte, bei der Einstellung. Als sie sahen, war, dass es, ah Verfahrens sie murmelte, jetzt, wo ich verstehe! Und sie gingen (Wortspiel?) Prozedurale XSLT zu schreiben! Die Sache ist, Sie XPath zu lernen und zu verstehen, die die Achsen von XML. Erinnert mich aus alter Zeit C-Programmierern Anpassung an OO Einsatz, wenn C ++ zu schreiben.

benutzen ich diese Werkzeuge, wie sie es mich ermöglicht, eine kleine C ++ Code-Basis zu schreiben, die von allen aber die grundlegendsten Datenstruktur Modifikationen und diese letzteren waren DB Strukturänderungen isoliert. Auch wenn ich C ++ zu einer anderen Sprache bevorzugen werde ich, was ich als nützlich betrachten die langfristige Lebensfähigkeit eines Software-Projekts zu profitieren.

Ich verwendete XSLT zu denken war eine großartige Idee. Ich meine, es ist eine großartige Idee.

Wenn es nicht ist die Ausführung.

Das Problem, das ich im Laufe der Zeit entdeckt wurde, dass Programmiersprachen in XML ist nur eine schlechte Idee. Es macht das Ganze undurchdringlich. Insbesondere denke ich XSLT ist sehr schwer lernen, Code und verstehen. Die XML oben auf die funktionalen Aspekte macht nur das Ganze zu verwirrend. Ich habe versucht, es zu 5 Mal in meiner Karriere zu lernen, und es funktioniert einfach nicht haften bleiben.

OK, man könnte ‚Werkzeug‘ - ich glaube, das war teilweise der Punkt, es ist Design - aber das ist die zweite Schwäche: all XSLT-Tools auf dem Markt ist, ganz einfach ... Mist

Die XSLT-Spezifikation für die Transformation von XML-Dokumenten in andere XML-Dokumente XSLT als „eine Sprache definiert “. Wenn Sie versuchen, irgend etwas zu tun, aber die grundlegende Datenverarbeitung innerhalb XSLT gibt es wahrscheinlich bessere Lösungen.

Auch erwähnenswert, dass die Datenverarbeitungsfähigkeiten von XSLT können in .NET benutzerdefinierten Erweiterungsfunktionen erweitert werden:

Ich behaupte, ein Online-Dokumentationssystem für mein Unternehmen. Die Autoren erstellen die Dokumentation in SGML (eine XML-ähnlichen Sprache). Die SGML wird dann mit XSLT kombiniert und in HTML umgewandelt.

So können wir leicht Änderungen an der Dokumentation Layout machen, ohne eine Codierung zu tun. Es ist nur eine Frage des XSLT zu ändern.

Das funktioniert gut für uns. In unserem Fall ist es ein nur Dokument zu lesen. Der Benutzer ist nicht mit der Dokumentation zu interagieren.

Auch durch XSLT verwenden, arbeiten Sie näher an Ihren Problembereich (HTML). Ich halte immer, dass eine gute Idee sein.

Schließlich, wenn Ihr aktuelles System funktioniert, lassen Sie es allein. Ich würde vorschlagen, nie Ihren vorhandenen Code Wegwerfen. Wenn ich von vorne anfangen, würde ich XSLT verwenden, aber in Ihrem Fall würde ich verwenden, was Sie haben.

Es kommt darauf an, was Sie brauchen es für. Seine größte Stärke ist die einfache Wartbarkeit der Transformation, und tilgt Ihre eigenen Parser schreiben im Allgemeinen, dass. Mit diesem wird gesagt, manchmal ist ein System, klein und einfach und wirklich eine „fancy“ Lösung nicht braucht. Solange Ihre Code-basierten Builder austauschbar ist, ohne dass anderen Code ändern zu müssen, keine große Sache.

Wie für die Hässlichkeit von XSL, ja, es ist hässlich. Ja, es dauert etwas gewöhnungsbedürftig. Aber sobald man den Dreh raus zu bekommen (sollte nicht lange dauern, IMO), es ist eigentlich glatt Segeln. Zusammengestellt Transformationen ganz schnell in meiner Erfahrung laufen, und man kann sicherlich in sie debuggen.

Ich glaube immer noch, dass XSLT kann nützlich sein, aber es ist eine hässliche Sprache und kann zu einem schrecklichen unleserlich, wartbaren Chaos führen. Teilweise, weil XML lesbar ist nicht genug menschliche eine „Sprache“ zu bilden und zum Teil, weil XSLT steckte irgendwo zwischen deklarativen und prozeduralen zu sein. Having said that, und ich denke, kann ein Vergleich mit regulären Ausdrücken gezogen wird, hat es verwendet, wenn es um einfache gut definierte Probleme kommt.

Mit dem alternativen Ansatz und XML in Code Parsen können ebenso böse sein und Sie wirklich wollen, eine Art von XML-Rangier / Bindungstechnologie (wie JiBX in Java) verwenden, die Ihre XML direkt in ein Objekt konvertieren werden.

Wenn Sie XSLT in einem deklarativen Stil verwenden können (obwohl ich nicht ganz zustimmen, dass es deklarative Sprache ist), dann denke ich, es ist sinnvoll und ausdrucksstark.

Ich habe Web-Anwendungen geschrieben, die eine OO-Sprache (C # in meinem Fall) verwenden, um die Daten / Verarbeitungsschicht, sondern XML-Ausgabe zu behandeln, anstatt HTML. Dies kann dann direkt von den Kunden als Daten API verbraucht werden oder als HTML von XSLTs gemacht. Da die C # XML wurde die Ausgabe, die strukturell kompatibel mit diesem Einsatz war, war es sehr glatt, und die Präsentationslogik wurde deklarative gehalten. Es war leichter zu verfolgen und ändern als die Tags von C # zu senden.

Wie Sie jedoch mehr Verarbeitungslogik auf der XSLT-Ebene erfordern wird sie gefaltet und ausführliche - auch wenn Sie „get“ der funktionalen Stil

.

Natürlich, in diesen Tagen ich wahrscheinlich würde diese Web-Anwendungen geschrieben, um eine RESTful-Schnittstelle - und ich denke, Daten „Sprachen“ wie JSON gewinnen Traktion in Bereichen, die XML wird traditionell von XSLT transformiert worden. Aber jetzt XSLT ist nach wie vor eine wichtige und nützliche Technologie.

Ich habe viel Zeit in XSLT verbracht und fand, dass es zwar ein nützliches Werkzeug in einigen Situationen ist es definitiv keine fix ist alles. Es funktioniert sehr gut für B2B-Zwecke, wenn es für die Datenkonvertierung für maschinenlesbare XML-Eingabe / Ausgabe verwendet wird. Ich glaube nicht, dass Sie auf der falschen Spur in Ihrer Erklärung seiner Grenzen sind. Eines der Dinge, die mir am meisten frustriert waren die Nuancen in den Implementierungen von XSLT.

Vielleicht sollten Sie zur Verfügung einige der anderen Markup-Sprachen sehen. Ich glaube, Jeff einen Artikel über dieses Thema sehr über Stapelüberlauf hat.

Ist HTML a Humane Markup Language?

Ich würde einen Blick auf, was er schrieb. Sie können sich wahrscheinlich ein Software-Paket finden, das tut, was Sie „out of the box“ wollen, oder zumindest sehr nahe an Stelle Ihre eigenen Sachen von Grund auf zu schreiben.

Ich bin derzeit mit Schaben Daten von einer öffentlichen Stelle beauftragt (Ja, ich weiß). Zum Glück paßt es xhtml so die Daten, die ich bin in der Lage Xslt zu verwenden, um zu sammeln was ich brauche. Die resultierende Lösung ist lesbar, sauber und einfach zu ändern, wenn Bedarf auftritt. Perfect!

Ich habe vor XSLT verwendet. Die Gruppe von 6 .xslt Dateien (aus einem großen einem Refactoring) betrug etwa 2750 Zeilen lang, bevor ich es in C # neu geschrieben. Der C # -Code ist derzeit 4000 Zeilen viel Logik enthält; Ich weiß nicht einmal darüber nachdenken, was das in XSLT schreiben getroffen hätte.

Der Punkt, wo ich aufgab ist, wenn ich nicht XPATH 2,0 realisiert deutlich meine Fortschritte wurden verletzt.

Zur Beantwortung Ihrer drei Fragen:

  1. Ich habe vor XSLT einmal einigen Jahren verwendet.
  2. Ich glaube XSLT die richtige Lösung unter bestimmten Umständen sein könnte. (Sag niemals nie)
  3. Ich neige dazu, mit Ihrem assesment zu vereinbaren, dass es vor allem nützlich für die ‚einfache‘ Transformationen ist. Aber ich denke, solange man gut XSLT verstehen, ein Fall gemacht werden soll es für größere Aufgaben mit wie eine Website als XML in HTML umgewandelt zu veröffentlichen.

Ich glaube, der Grund, warum viele Entwickler XSLT nicht mögen, ist, weil sie das grundlegend andere Paradigma nicht verstehen, es basiert auf. Aber mit dem jüngsten Interesse an funktionaler Programmierung könnten wir sehen XSLT ein Comeback ...

Ein Ort, an dem Xslt wirklich Berichte zu erzeugen scheint. Ich habe, dass ein 2-Schritt-Verfahren gefunden, mit dem ersten Schritt die Berichtsdaten als XML-Datei exportieren, und der zweite Schritt des visuellen Berichts der Generierung von XML mit XSLT. Dies ermöglicht eine schöne visuelle Berichte, während immer noch die Rohdaten um als Validierungsmechanismus zu halten, wenn es sein muss.

Bei einer früheren Firma haben wir viel mit XML und XSLT. Sowohl XML und XSLT groß.

Ja, es gibt eine Lernkurve, aber dann haben Sie ein leistungsfähiges Werkzeug, XML zu behandeln. Und Sie können sogar XSLT auf XSLT verwenden (was manchmal nützlich sein kann).

Performance ist auch ein Problem (mit sehr großer XML), aber Sie können, dass durch die Verwendung von Smart XSLT angehen und eine Vorverarbeitung mit dem (generierte) XML tun.

Jeder mit Wissen von XSLT kann die apearance des fertigen Produkts ändern, weil es nicht kompiliert wird.

Ich persönlich mag XSLT, und Sie können die vereinfachte Syntax geben möchten ein Blick (keine expliziten Vorlagen, nur eine ganz normale alte HTML-Datei mit einigen XSLT-Tags Werte in sie zu spucken), aber es ist einfach nicht jedermanns Sache.

Vielleicht möchten Sie einfach Ihre Autoren eine einfache Wiki oder Markdown-Schnittstelle anbieten zu können. Es gibt Bibliotheken für das auch, und wenn XSLT ist nicht für Sie arbeiten, vielleicht XML funktioniert nicht für sie auch nicht.

XSLT ist nicht das Ende alles sein-alle XML-Transformation. Allerdings ist es sehr schwierig zu beurteilen, basierend auf den Informationen gegeben, wenn es die beste Lösung für Ihr Problem gewesen wäre oder wenn es andere effiziente und wartbar Ansätze. Sie sagen die Autoren ihre Inhalte in einem vereinfachten Format eingeben könnte - welches Format? Textfelder? Welche Art von html wurden Umwandlung Sie es? Um zu beurteilen, ob XSLT das richtige Werkzeug für den Job ist, würde es helfen, die Eigenschaften dieser Transformation im Detail zu kennen.

Ich genieße XSLT verwenden nur für die Baumstruktur von XML-Dokumenten zu ändern. Ich finde es mühsam, alles zu tun, um die Textverarbeitung im Zusammenhang und absteigen, das zu einem benutzerdefinierten Skript, das ich vor oder nach dem Auftragen einen XSLT in ein XML-Dokument ausgeführt werden kann.

XSLT 2.0 enthielt viel mehr String-Funktionen, aber ich denke, es ist nicht eine gute Passform für die Sprache, und es gibt nicht viele Implementierungen von XSLT 2.0.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top