|
||||
XML auf dem Server per XSLT in HTML transformieren
Ich habe ein XML-Beispiel von selfhtml.org auf den Server geladen.
Es sind drei Dateien. http://borumat.de/xslt-test/gruss.dtd HTML-Code:
<!ELEMENT gruss (#PCDATA)>
HTML-Code:
<?xml version="1.0"?> <!DOCTYPE gruss SYSTEM "gruss.dtd"> <?xml-stylesheet type="text/xsl" href="gruss.xsl" ?> <gruss>Hallo Welt!</gruss> HTML-Code:
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head><title></title></head> <body> <p> <xsl:value-of select="." /> </p> </body> </html> </xsl:template> </xsl:stylesheet> Geht so etwas per PHP? Ausgeliefert werden soll: HTML-Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <p>Hallo Welt!</p> </body> </html>
__________________
|
Sponsored Links |
|
||||
Ich kenne mich damit nicht wirklich aus, aber vieleicht hilft dir das weiter:
PHP: DOM-XML - Manual |
Sponsored Links |
|
||||
Zitat:
Wenn ich den Zweck von DOM-XML richtig verstehe, dient er dazu, Teile des DOM gezielt zu manipulieren. Aber alle Manipulationen sind ja bereits festgelegt - in XSLT. Diese sollen nur angewendet werden. Aber eben nicht vom Browser, sondern vom Server. Auf SELFHTML: XML / Darstellung von XML-Daten / Beispiele für XSLT wird der XSLT-Parser Saxon erwähnt. Ob sich die XSL-Erweiterung für PHP5 für das Parsen eignet, ist mir nicht klar. Mal abgesehen davon, ob ich so eine Erweiterung auf meinem Webspace, der PHP bereitstellt, überhaupt nutzen könnte. Verwendet jemand von Euch XML/XSLT und kann mir für einen Rat geben?
__________________
Geändert von AndreasB (25.11.2010 um 09:00 Uhr) |
|
||||
Ah, du hast also schon herausgefunden, dass es mit PHP doch möglich ist.
Der XSLT-Prozessor ist genau dafür gedacht. Mangels Erfahrung kann ich dir leider auch nicht so richtig weiterhelfen, aber ich habe auf die Schnelle zwei auf den ersten Blick brauchbare Links gefunden: Using PHP 5's XSL extension to perform XSL Transformations http://www.anyexample.com/programmin..._using_php.xml Die werde ich jetzt erst mal selbst lesen, auch wenn ich keinen sinnvollen Einsatz dafür habe, die Technik interessiert mich auch. |
|
||||
@inta
Freut mich, dass Dich das Thema auch interessiert. Danke für die Links. Wenn ich Performing the XML-Transformation richtig verstehe, scheint es sehr kompliziert zu sein, auf dem Server alle XML-Dokumente vor dem Ausliefern per PHP parsen zu lassen. Enorm viele Schritte und enorm viel Code scheint nötig zu sein. Ich hatte gehofft, es gäbe so etwas wie eine Anweisung, die keinerlei dokumentspezifischen Bestandteile enthält (denn es soll ja alle XML-Dokumente betreffen), und damit wäre es getan.
__________________
|
|
||||
@inta
Es sind viele Schritte für eine sehr prägnant fassbare Aufgabe: "Alle Dokumente mit der Endung 'xml' bei Anforderung auf dem Server parsen und dann ausliefern." Dein Code (Danke dafür) enthält noch dokumentspezifische Teile ('something.xsl' und 'something.xml'). Vielleicht drücke ich mich auch noch unklar aus und wir missverstehen uns.
__________________
|
|
||||
Zitat:
Du brauchst doch nur ein Stylesheet, somit kann das ruhig fix sein. Falls du dort weitere Dateien einbindest (xsl:include), so werden diese automatisch geladen, darum musst du dich nicht kümmern. Die XML-Datei muss natürlich angegeben werden, aber das lässt sich recht elegant über einen zentralen Controller (index.php) steuern und die URL mit Hilfe von mod_rewrite entsprechend den eigenen Vorstellungen anpassen. Natürlich ist das ein Aufwand, aber den hat man immer bei umfangreicheren Systemen und ich finde das hier durchaus im Rahmen. |
|
||||
Wenn man sich die Schritte einmal ansieht, dann erkennt man eigentlich, dass es gar nicht mit weniger Schritten möglich ist:
Natürlich sind es immer dieselben Schritte, aber beim Laden des Stylesheets oder des XMLs können Fehler auftreten (Syntaxfehler, Datei nicht vorhanden, etc.), die abgefangen werden sollten, also müssen das eigene Schritte sein. Wenn das Stylesheet nicht geladen werden kann, kann es dem Parser auch nicht bekannt gemacht werden, also muss dies ebenfalls ein eigener Schritt sein. "Parsen und ausgeben" geht halt nur, wenn alles vorher geklappt hat, also auch ein eigener Schritt. Imo geht es nicht minimaler. Natürlich kann und sollte man es in eine Klasse oder Funktion auslagern um nicht immer alles selbst hinschreiben zu müssen, oder um bei einem Fehler eine Fehlerseite zu rendern, oder ..., aber das ist ja ein Klacks. Dann bleibt nur noch eine Zeile, und als Stylesheet kann man einer Klasse z.B. einen Default-Wert geben, so dass man eigentlich nur noch die XML-Datei angeben muss, welche sich dann auch noch automatisch aus der URL ableiten lässt. Also liesse sich ein Script (index.php) schreiben, welche automatisch nach einer passenden XML-Datei sucht und diese parst. Dann muss man nur noch XML-Dateien anlegen und nicht eine Zeile PHP-Code schreiben, wie soll es noch kürzer, knapper, einfacher gehen? |
Sponsored Links |
|
||||
@mantiz
Es ist völlig verständlich und auch naheliegend, dass diverse programmiertechnischen Schritte hinter einer "mit wenigen Worten beschreibbaren Aufgabe" stehen. Du schreibst ja selbst, dass dafür typischerweise in Programmiersprachen Konzepte verwendet werden, die Schritte gruppieren/zusammenfassen. "Funktion", "Modul", ... Da ich kein Programmierer bin, hängt für mich die Umsetzbarkeit diverser Aufgaben davon ab, ob fertige Funktionen existieren oder nicht. Weiter ist nix hinter meinem Kommentar. Natürlich auch keinerlei Erwartungshaltung. Sollte sich in einem Thread eine beispielhafte Lösung ergeben: fein. So haben auch andere künftige Leser mit geringen Programmierkenntnissen was davon. Wenn sich keine Lösung ergibt: kein Problem. Vielleicht ist das Transformieren auf dem Server auch nicht angemessen, weil die verbreiteten Browser in hinreichender Weise XML/XSLT bereits unterstützen. Das habe ich noch nicht recherchiert. Als Indiz, dass eine Auslieferung als HTML sinnvoll ist, werte ich z.B. den Code der Websites von Firmen, die mit dem Thema XML befasst sind wie XML, Semantic Web, Internet, Java und viel mehr | blog.linkwerk.com
__________________
|
Sponsored Links |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
MP3 per Object Element auf dem Mac? | knortn | (X)HTML | 17 | 19.08.2005 17:57 |
Browserneurose | SimonWpt | CSS | 39 | 15.07.2005 11:51 |
Beim Seitenaufruf schon connect zu anderem Server herstellen | Olel | (X)HTML | 8 | 01.02.2005 01:14 |
Scrollbares Textfeld mit purem CSS | Dancer | CSS | 6 | 24.01.2005 16:58 |
XML -> HTML mit CSS, erweiterbares layout | tk | CSS | 0 | 29.11.2004 09:41 |