hkl: Hotfix PHP4.3.1x DOMXML XSLT Problem

Beitrag lesen

Hallo !

Hab nochmal mit den verschiedenen Schnittstellen fuer
XSLT unter PHP4 und hab jetzt glaube ich nen Hotfix
fuer das Probelm das ich 'mal geschildert hatte
[link http://forum.de.selfhtml.org/?t=140508&m=912954@title=PHP4 XSLT Seg Fault]

Das Problem scheint die Vrbindung von XLST-Processing
und nachfolgenden Transaktionen im XML-Ergebnisbaum
zu sein.

These

Vielleicht versucht der XSLT-Prcessor
Knoten rekursiv feizugeben, deren Uneterknotennicht
mehr existieren.

Zumindest hilft das hier

//[...]
$xmldoc1 = domxml_open_file("content/complex.xml");
$xsldoc = domxml_xslt_stylesheet_file ("xslt/complex.xsl") ;
$xmldoc2 = $xsldoc->process($xmldoc1,array ( 'id' => $_GET["id"], 'mode'=> "normal" ));
/////////////////////////////////////////////////
// Hierauf kommt's anscheined an
//
$xmldoc = domxml_open_mem($xmldoc2->dump_mem());
//
//[...]
// wenn man sowas dann spaeter machen will
//
foreach ($bodytree->children() as $contenttree)
{
        $dummy = $xmldoc->create_element('dummy');
        $dummy = $contenttree->clone_node(true);
// $father aus $xmldoc
        $father = $pagetree->parent();
        $father->append_child($dummy);
}
//[..]

So wurde der Baum vom stylesheet-prozessor
entkoppelt.
Performant ist das natuerlich nicht, da doppelt
geparsed und ein evtl. sehr grosser String kopiert
wird.

Ausserdem sind solche Dealokationen meist in mehrfach
verwendeten Funktionen enthalten - es steht zu vermuten
das der Effekt noch an andere Stele auftaucht.

Gruss

Holger