Hallo !
hab ein Problem mit den XML/XSLT Modulen unter PHP4
( PHP 4.3.10-18 ( cli ) und 4.3.11 ( cgi ) )
Mein Skript soll xsl-transformieren (xml->xhtml)
und im Ergebnisbaum einen Zweig ersetzen, also etwa
so:
<?php
$_xmldoc = domxml_open_file("simple.xml");
$xsldoc = domxml_xslt_stylesheet_file ("simple.xsl");
$xmldoc = $xsldoc->process($_xmldoc);
$nodes = $xmldoc->get_elements_by_tagname('baz');
$baz_tree = $nodes[0];
$dummy_tree = $xmldoc->create_element('dummy');
$baz_tree->replace_node($dummy_tree);
print $xmldoc->dump_mem();
?>
Das klappt wenn es wirklich sehr simple Dateien
handelt:
simple.xml
<?xml version="1.0" encoding="utf-8"?>
<foo>
<bar>
<baz></baz>
</bar>
</foo>
simple.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output
method="xml"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
encoding="utf-8"
indent="no"/>
<xsl:template match="/">
<xsl:copy-of select="." />
XSLT mit PHP4 - Seg Fault mit DOM XML
</xsl:template>
</xsl:stylesheet>
Wenn ich das aber mit einem komlexeren Sytesheet
und realen Daten ( komplexer, aber mengenmaessig
wenig - nur ca 20 zeilen ) versuche, gibt's ein Segmantation fault.
- und zwar anscheinend wenn das Skript beendet
wird - bis dahin klappen alle Testauschriften.
Das kenn ich sonst von MS ATL/COM - wenn man
innerhalb eines Blocks "CoUnitialize()" aufruft,
"stehen" die SmartPointer ploetlich in der Luft
und die Destruktoren greifen ins Leere.
Vieleicht ist das hier ja aehnlich gelagert ?!?
Aber :
- warum klappt's mit kurzen Skripten ?
- und vor allem : koennte man die Ressourcen
denn im BLock ueberhaupt irgendwie explizit
freigeben ?
Bin kein PHP Experte; muss das nur machen
um das XSL einzubinden
Fuer mich wirft das ernste systemische Fragen auf
- dazu werde ich noch 'nen Artikel zu
Programmiertechnik ( weiss nicht wo sonst )
Leider kann ich an der Zielplatform nun wirklich
nichts aendern ( Sourceforge.net Webservice°°)
Waere toll wenn jemand eine Tip haette !!!
Danke fuer's Lesen
und Gruss
Holger
P.S.: Geht um eine Website fuer eine freie Software
die ich bald online bringen moechte da sich sonst
kein Team zusammenfindet.
Insgesamt ist das fuer mich ein aeusserst
unangenehmer Sachverhalt; ich hab das Systemdesign
fuer's erste Release komplett ueberarbeitet.
( Oder abgemagert - die Suchfunktion faellt damit
erst mal weg. )