zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden XML auf dem Server per XSLT in HTML transformieren

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 25.11.2010, 00:47
Benutzerbild von AndreasB
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.11.2005
Beiträge: 1.391
AndreasB wird schon bald berühmt werden
Standard 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)>
http://borumat.de/xslt-test/gruss.xml
HTML-Code:
<?xml version="1.0"?>
<!DOCTYPE gruss SYSTEM "gruss.dtd">
<?xml-stylesheet type="text/xsl" href="gruss.xsl" ?>
<gruss>Hallo Welt!</gruss>
http://borumat.de/xslt-test/gruss.xsl
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>
Ich möchte das XML auf dem Server parsen lassen, damit HTML (und nicht XML) an den Browser ausgeliefert wird.

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>
__________________

Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 25.11.2010, 01:55
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Ich kenne mich damit nicht wirklich aus, aber vieleicht hilft dir das weiter:
PHP: DOM-XML - Manual
__________________
github | http://dnaber.de
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 25.11.2010, 08:39
Benutzerbild von AndreasB
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.11.2005
Beiträge: 1.391
AndreasB wird schon bald berühmt werden
Standard

Zitat:
Zitat von David Beitrag anzeigen
Ich kenne mich damit nicht wirklich aus, aber vieleicht hilft dir das weiter:
PHP: DOM-XML - Manual
Danke für den Hinweis.

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)
Mit Zitat antworten
  #4 (permalink)  
Alt 25.11.2010, 09:15
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

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.
Mit Zitat antworten
  #5 (permalink)  
Alt 25.11.2010, 09:45
Benutzerbild von AndreasB
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.11.2005
Beiträge: 1.391
AndreasB wird schon bald berühmt werden
Standard

@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.
__________________

Mit Zitat antworten
  #6 (permalink)  
Alt 25.11.2010, 12:14
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Zitat:
Zitat von AndreasB Beitrag anzeigen
Enorm viele Schritte und enorm viel Code scheint nötig zu sein.
Das sind dir zu viele Schritte? Ich finde das recht einfach und kurz gehalten.

Ich habe dir das Beispiel mal auf das wesentliche reduziert, viel ist das nicht:
PHP-Code:
$xp = new XsltProcessor();

// create a DOM document and load the XSL stylesheet
$xsl = new DomDocument;
$xsl->load('something.xsl');

// import the XSL styelsheet into the XSLT process
$xp->importStylesheet($xsl);

// create a DOM document and load the XML datat
$xml_doc = new DomDocument;
$xml_doc->load('something.xml');

$html $xp->transformToXML($xml_doc); 
Mit Zitat antworten
  #7 (permalink)  
Alt 25.11.2010, 12:23
Benutzerbild von AndreasB
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.11.2005
Beiträge: 1.391
AndreasB wird schon bald berühmt werden
Standard

@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.
__________________

Mit Zitat antworten
  #8 (permalink)  
Alt 25.11.2010, 12:54
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Zitat:
Zitat von AndreasB Beitrag anzeigen
Dein Code (Danke dafür) enthält noch dokumentspezifische Teile ('something.xsl' und 'something.xml').
Der Code ist aus einem der Beispiele.

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.
Mit Zitat antworten
  #9 (permalink)  
Alt 26.11.2010, 11:29
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Wenn man sich die Schritte einmal ansieht, dann erkennt man eigentlich, dass es gar nicht mit weniger Schritten möglich ist:
  • Parser laden
  • Stylesheet laden
  • Stylesheet dem Parser bekannt machen
  • XML laden
  • Parsen und ausgeben

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?
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 26.11.2010, 12:22
Benutzerbild von AndreasB
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.11.2005
Beiträge: 1.391
AndreasB wird schon bald berühmt werden
Standard

@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
__________________

Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ä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


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:42 Uhr.