phpbar.de logo

Mailinglisten-Archive

[php] [PHP5] XSL+PHP Funktionen

[php] [PHP5] XSL+PHP Funktionen

Johannes Schlueter schlueter at phpbar.de
Die Aug 3 04:07:35 CEST 2004


Hi,

nachdem ich die Liste inzwischen Recht geflutet habe nochmal was von mir, 
diesmal nicht zu goto:

Ich habe eine PHP-Anwendung gebaut, die mit Hilfe der XSL-Extension von PHP5 
ein XML-Dokument ein wenig konvertiert. Dazu nutzte ich auch die geniale 
Möglichkeit aus dem XSL heraus PHP-Funktionen aufzurufen. In meiner 
CallBack-Funktion will ich nun XML erzeugen, dass in das Ergebnisdokument 
eingesetzt wird oder noch vom XSLT-Prozessor verarbeitet wird.

Ein wenig Code:

document.xml:
<dokument/>

stylesheet.xsl:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:php="http://php.net/xsl" version='1.0'>
   <xsl:template match="/">
     <xsl:value-of select="php:function('my_callback')"/>
   </xsl:template>
 </xsl:stylesheet>

test.php:
<?php
$domstyle = new DomDocument();
$domstyle->load('stylesheet.xsl');

$domdocument = new DomDocument();
$domdocument->load('document.xml');

$xslt = new xsltProcessor();
$xslt->registerPHPFunctions();
$xslt->importStyleSheet($domstyle);
print $xslt->transformToXML($domdocument);

function my_callback() {
  return ????;
}
?>

Das Grundsätzliche funktioniert wunderbar, ich komme an die Übergebenen 
Parameter und alles (hier weg gelassen) nur beim zurück geben hackt es. Mache 
ich ein "return '<someTag><someOtherTag/></someTag>';" werden die < und 
>durch &lt; bzw. &gt; ersetzt. Mit etwas Recherche habe ich rausgefunden, 
dass ich auch ein DOMDocument-Objekt zurück geben kann:
<?php
function my_callback() {
    $dom = new DOMDocument();
    $dom->loadXML('<someTag>some Text</someTag>');
    return $dom->documentElement;
}
?>
Dann verschwinden jedoch die Tags komplett und im Ergebnis bleibt nur "some 
Text". Hat jemand 'ne Ahnung wie ich die Tags als Tags ins Ergebnis bekomme 
oder geht es überhauptnicht und ich kann mir das abschminken?

johannes
-- 
Johannes Schlüter                                     http://schlueters.de
php::bar | Der Treffpunkt für Einsteiger und Profis   http://www.phpbar.de

php::bar PHP Wiki   -   Listenarchive