ID: 29087 Updated by: [EMAIL PROTECTED] Reported By: x-penguin at tut dot by -Status: Open +Status: Bogus Bug Type: DOM XML related Operating System: Linux PHP Version: 5CVS-2004-07-10 (dev) New Comment:
You have to use $xmlDOM->substituteEntities = true; before $xmlDOM->loadXML() Previous Comments: ------------------------------------------------------------------------ [2004-07-10 18:25:28] x-penguin at tut dot by Description: ------------ When attempting to do an XSL transformation using the new DOM and XSL extensions available in PHP 5 RC 3, I've noticed entities are not expanded in the output. If I import the DOM object into SimpleXML, the entities are expanded. I run Apache/2.0.48 (Unix). I don't recall seeing any errors when I built and installed Apache, PHP, libxml2, or libxslt. libxslt 1.1.8 libxml 2.6.11 php5cvs-2004-07-10 ./configure --prefix=/usr --sysconfdir=/etc/ --with-apxs2 --with-config-file-path=/etc --with-zlib --with-bz2 --enable-ftp --with-gettext --with-iconv --with-mysql=/usr --with-ncurses --enable-mbstring=ru --enable-mbregex --enable-mbstr-enc-trans --with-png --with-pgsql --disable-short-tags --with-xsl --with-libxml --with-gd --without-sqlite Reproduce code: --------------- <?php $xml = <<<EOD <!DOCTYPE example [ <!ENTITY entity1 "Entity 1"> <!ENTITY entity2 "Entity 2"> ]> <example> <element1>Example Document</element1> <element2>&entity1;</element2> <element3>&entity2;</element3> </example> EOD; $xsl = <<<EOD <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="example"> <p>XSL Element 1: <xsl:value-of select="element1" /></p> <p>XSL Element 2: <xsl:value-of select="element2" /></p> <p>XSL Element 3: <xsl:value-of select="element3" /></p> </xsl:template> </xsl:stylesheet> EOD; $xmlDOM = new DomDocument; $xmlDOM->loadXML($xml); $xslDOM = new DomDocument; $xslDOM->loadXML($xsl); $processor = new XsltProcessor; $processor->importStyleSheet($xslDOM); print $processor->transformToXML($xmlDOM); $xmlDocument = simplexml_import_dom($xmlDOM); print '<p>SimpleXML Element 1: ' . $xmlDocument->element1 . '</p>'; print '<p>SimpleXML Element 2: ' . $xmlDocument->element2 . '</p>'; print '<p>SimpleXML Element 3: ' . $xmlDocument->element3 . '</p>'; ?> Expected result: ---------------- XSL Element 1: Example Document XSL Element 2: Entity 1 XSL Element 3: Entity 2 SimpleXML Element 1: Example Document SimpleXML Element 2: Entity 1 SimpleXML Element 3: Entity 2 Actual result: -------------- XSL Element 1: Example Document XSL Element 2: XSL Element 3: SimpleXML Element 1: Example Document SimpleXML Element 2: Entity 1 SimpleXML Element 3: Entity 2 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=29087&edit=1