hkl: PHP4 XSLT Seg Fault

Beitrag lesen

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. )