ID: 24296
Updated by: [email]edinkphp.net[/email]
Reported By: andrew at shh dot fi
-Status: Assigned
+Status: Feedback
Bug Type: XSLT related
Operating System: win32 and linux
PHP Version: 4.3.2
Assigned To: edink
New Comment:

Which expat version worked for you?


Previous Comments:
------------------------------------------------------------------------

[2003-06-26 12:54:44] [email]sniperphp.net[/email]

Edin, can you update the expat lib in the win32 stuff..?
Andrew, what version did you use?


------------------------------------------------------------------------

[2003-06-25 02:17:41] andrew at shh dot fi

Problem resolved!!

Upgrade the expat to the latest version and everything works

------------------------------------------------------------------------

[2003-06-24 01:25:05] andrew at shh dot fi

I found another person who had experienced similar problems on the
Gingerall.com site. He had attached an example file. The size is 277034
characters - rather large. This appears to fail.

However, I have installed the latest Expat Release 1.95.6 update and it
seems to have worked - from a command line. The problem will now need
to be addressed in the PHP sablot.

Heres the xslt file:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html" encoding="iso-8859-1" version="1.0"
indent="yes"/>
<xsl:param name="login"/>
<xsl:template match="navigation">
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>

Heres the xml file1: test.xml

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE navigation [<!ENTITY module1 SYSTEM "test2.xml">]>
<navigation>&module1;</navigation>

And heres part of the external xml file: test2.xml

<?xml version="1.0" encoding="iso-8859-1"?>
<test>
<![CDATA[
textetxtetxt ... 276,946 Bytes ... ]]>
</test>

Well these are examples but in the real work I need to pass a huge xml
file with lots of data.

regards

------------------------------------------------------------------------

[2003-06-23 17:51:31] [email]iliaaphp.net[/email]

Could you at least aproximate the size of the xml file at which the
problems begins to occur?

------------------------------------------------------------------------

[2003-06-23 06:43:02] andrew at shh dot fi

Description:
------------
The setup is an xml doent with several external entities including
xml files.

Using the standard xslt functions in php the problem begins when the
filesize exceed a limit (don't know what the size is unless I start
couting all the includes). By choopping out a number of lines from the
files the problem is OK.

Its not about structure as this works OK in MsXML plus other packages
like XML Spy. The problem is definately with the sablot/expat
somewhere.

I am not sure whether its a combination of entities and filesize or
just filesize.

What appears to be happening is some kind of cache that chops the end
off therefore giving an error 3 which is an no element found error.

Perhaps the problem is with expat? Any ideas?

Reproduce code:
---------------
<?

$xml = "file://".getcwd()."\\index.xml";
$xsl = "file://".getcwd()."\\text.xsl";

//create the processor
$my_xslt = xslt_create();

//process the file and echo the result
$result = xslt_process($my_xslt,$xml,$xsl);

if (!$result) {
print "Error Number: ".xslt_errno($my_xslt);
print xslt_error($my_xslt);
}

//free the processor
xslt_free($my_xslt);

print htmlspecialchars($result);


?>

Expected result:
----------------
A load of text ....

Actual result:
--------------
Warning: Sablotron error on line 293: XML pr error 3: no element
found in E:\projects\studybuilder\p.php on line 12
Error Number: 2
XML pr error 3: no element found


------------------------------------------------------------------------


--
Edit this bug report at [url]http://bugs.php.net/?id=24296&edit=1[/url]