Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  XML
Letztes Update: 16.08.2005 17:53:45


Navigation

Seite News *

Seite Startseite
Seite Über SELFPHP
Seite Werbung
Seite Kontakt
Seite Forum *
Seite PHP-Skripte
Seite PHP Befehlsreferenz
Seite PHP5 Praxisbuch
Seite Gratis-Videolektionen*
Seite Download *
Seite SELFPHP Banner *
Seite SELFPHP in Buchform
Seite Newsletter *
Seite Impressum

Seite Anbieterverzeichnis

 
* Link führt ins Internet


Anbieterverzeichnis
Informieren Sie sich über die Unternehmen in unserem Anbieterverzeichnis!  

 


SELFPHP Forum
Fragen rund um die Themen PHP? In über 79.000 Beiträgen finden Sie sicher die passende Antwort!*  


Newsletter
Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!*

Vorname: 
Name:
E-Mail:
 



 

Verwendung von XSLT mit PHP




XSLT (XSL Transformations) spielt eine wichtige Rolle bei der Transformation und Präsentation von XML-Dokumenten. Die Leistungsfähigkeit, die XSLT für PHP-Anwendungen bietet, lässt sich am besten anhand von Beispielen demonstrieren. Für die Beispiele wurde hier Version 4.3.3 von PHP verwendet. Hierbei ist zu berücksichtigen, dass diese Erweiterung in PHP kompiliert werden muss, bevor die Beispiele ausgeführt werden können.

Es gibt zwei Beispieldateien, die für die folgenden Beispiele verwendet werden. Zum Einen gibt es eine simple XML-Datei mit dem Namen adressen.xml. Zum Anderen gibt es eine simple XSLT-Datei mit dem Namen adressen.xslt. Die Beispiele setzen voraus, dass diese beiden Beispiele im gleichen Verzeichnis gespeichert werden, in dem auch das PHP-Skript selbst steht.


Inhalt adressen.xml



<?xml version="1.0" encoding="UTF-8"?>
<?xml
-stylesheet type="text/xsl" href="example.xslt"?>
<person>    
<name>        
    <vorame>Matthias</vorname>
    <zuname>Volkan</zuname>
    <nachname>Kannengiesser</nachname>
</name>
<email>matthiask@atomicscript.de</email>
<telefon>
    <home>123-123-123-123</home>
    <mobil>321-321-321-321</mobil>
</telefon>
<beruf>Informatiker</beruf>
<aufgabe>PHP Developer</aufgabe>
</person>

Inhalt adressen.xslt
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:param name="date" select="2004"/>
<xsl:template match="/person">
<html>
<head>
<title>XML und XSLT Beispiel</title>
</head>
<body>
<table>
    <tr>
    <td>Personal Information:</td>
    <td><xsl:value-of select="name/vorname" /></td>
    <td><xsl:value-of select="name/zuname" /></td>
    <td><xsl:value-of select="name/nachname" /></td>
    </tr>
    <tr>
    <td>Email Address:</td>
    <td colspan="3"><xsl:value-of select="email" /></td>
    </tr>
    <tr>
    <td>Department:</td>
    <td colspan="3"><xsl:value-of select="beruf" /></td>
    </tr>
    <tr>
    <td>Position:</td>
    <td colspan="3"><xsl:value-of select="aufgabe"/></td>
    </tr>    
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>



Bevor Sie jedoch los legen können, sollten wir noch überprüfen ob die DOM-Erweiterung zur Verfügung steht, da deren Funktionen zur Verarbeitung von komplexen XML-Strukturen eine wesentliche Erleichterung darstellen.


Vorraussetzungen

Um die DOM XML-Funktionen erfolgreich ausführen zu können müssen Sie PHP mit der Option --with-dom kompilieren. Windows Nutzer entfernen zur Aktivierung dieser Erweiterung das Semikolon vor dem Eintrag extension=php_domxml.dll innerhalb der php.ini. Für ein einwandfreies Arbeiten benötigen Sie zusätzlich die GNOME XML Library, ab Version 2.4.14. Sie finden die aktuelle Version für Ihr Betriebssystem unter der folgenden Adresse: www.xmlsoft.org. Windows Nutzer sollten diese Bibliothek in das Systemverzeichnis kopieren.

Welche Version Sie aktuell verwenden, können Sie mit der Funktion domxml_version() ermitteln:



print_r(domxml_version());




DOM-, XML- und XSLT im Einsatz

Das erste Beispiel ist eine Demonstration der vier Basisfunktionen, die für eine XSLT-Transformation über die DOM-Erweiterung stattfinden müssen. An dieser Stelle soll der Code einmal genauer betrachtet werden:


<?php

// Erezugt ein DomDocument-Objekt unter Verwendung eines
// XML-Dokuments
if(!$domXmlObj domxml_open_file("adressen.xml")) {
    die(
"XML-Dokument kann nicht geparst werden!");
}

// Erzeugt ein DOMDocument-Objekt unter Verwendung eines
// XSLT-Dokuments
$domXsltObj domxml_xslt_stylesheet_file("example.xslt");


// Erzeugt ein DOMDocument-Objekt welcher sich aus
// der Transformation eines XML- und XSLT-Dokument ergibt
$domTranObj $domXsltObj->process($domXmlObj);

// Gibt die Daten aus dem transformierten Objekt aus
echo $domXsltObj->result_dump_mem($domTranObj);
?>




Die Meisten der DOM XSLT-Funktionen befassen sich mit dem Erstellen, Löschen, und Modifizieren von DOMDocument-Objekten. Die erste hier verwendete Funktion ist die Funktion domxml_open_file(). Sie erstellt ein DOM-Objekt aus der vorhandenen XML-Datei. Die nächste aufgerufene Funktion ist domxml_xslt_stylesheet_file(), die eine neues DOMXSLTStylesheet-Objekt erzeugt. Dieses Objekt wird später bei der Transformation des XML- und XSLT-Dokuments verwendet, durch die der HTML-Output erstellt wird.

Es folgt die Prozessfunktion des DOMXSLTStylesheet-Objekts. Sie verwendet ein oder mehr Argumente; das erste Argument muss das DomDocument-Objekt sein. Dieses wendet die XSLT-Transformation auf das DOMDocument an, das ihm übergeben wird. Der Prozessfunktion können weitere Argumente übergeben werden; dabei kann es sich um zusätzliche XSLT-Parameter (Array) oder Xpath-Parameter (boolesch) handeln. Das schafft Flexibilität für den Transformationsprozess. Die Funktion gibt dann eine DOMDocument-Objekt aus, das die transformierten Daten enthält.

Um die transformierten Daten anzuzeigen, liefert die letzte Funktion das Ergebnis und gibt es für den Benutzer aus. Durch Ausführen der Funktion result_dump_mem() auf das transformierte DOMDocument $domTranObj-Objekt lassen sich der Output oder das Ergebnis der Transformation aufrufen. Hierzu gehört auch ein einfaches Beispiel, wie man eine XSLT-Transformation mit PHP und DOM XSLT durchführt.

Für das zweite Beispiel wird der optionale Parameter der Funktion result_dump_file() eingeführt, die den Output der XSLT-Transformation in eine Datei ausgibt.


Beispiel



<?php
// XML, XSLT and HTML Dokumente
$xmlDatei   "adressen.xml";
$xsltDatei  "adressen.xslt";
$htmlDatei  "adressen.html";
$xsltParam = array( "date" => date"F j, Y g:i a" ) );

// Erezugt ein DomDocument-Objekt unter Verwendung eines
// XML-Dokuments
if(!$domXmlObj domxml_open_file($xmlDatei )) {
    die( 
"XML-Dokument kann nicht geparst werden!" );
}

// Erzeugt ein DOMDocument-Objekt unter Verwendung eines
// XSLT-Dokuments
$domXsltObj domxml_xslt_stylesheet_file($xsltDatei);

// Erzeugt ein DOMDocument-Objekt welcher sich aus
// der Transformation eines XML- und XSLT-Dokument ergibt
$domTranObj $domXsltObj->process($domXmlObj$xsltParam);

// Erzeugt ein HTML-Dokument aus dem transformierten Objekt
$domXsltObj->result_dump_file($domTranObj$htmlDatei);

// Gibt die Datei adressen.html aus
include($htmlDatei);
?>



Wie im vorangehenden Beispiel ist das erste Argument noch immer das DOMDocument-Objekt, das durch die DOMXSLTStylesheet-Prozessfunktion erstellt wurde. Außerdem wurde der Prozessfunktion ein Parameter hinzugefügt, der einen Parameterwert an den XSLT-Prozessor übergibt. Dies demonstriert die Fähigkeit, die XSLT-Transformation in PHP dynamisch zu steuern.


 


Erzeugen eines XML-Parsers
 




 sponsored by

Host Europe


HighText iBusiness


Host Europe




© 2001-2006 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt
© 2005-2006 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de