ID: 16193
Comment by: southen-antispam- at pipeline dot com
Reported By: kdesormeaux at atre dot net
Status: Closed
Bug Type: XSLT related
Operating System: windows2000/linux...
PHP Version: 4.3.0-dev
New Comment:
Ok well I am getting something like this with the following code, and
I'm running Redhat9 with PHP 4.3.4. My error message is
Warning: Sablotron error on line 1: XML parser error 3: no element
found in
/home/httpd/vhosts/noctambus.com/httpdocs/reviews/xml/standardbrowser.php
on line 85
My code is:
/* transform method */
function transform() {
$arguments = array(
'/_xml' => $this->xml,
'/_xsl' => $this->xsl
);
$this->setOutput(
xslt_process($this->processor, 'arg:/_xml', 'arg:/_xsl', NULL,
$arguments)
);
$this->setError($err);
}
Can someone suggest a workaround?
Thanks!
Previous Comments:
------------------------------------------------------------------------
[2003-05-24 08:23:47] drm-nospam- at -nospam-melp-dot-nl dot nospam
[PHP 4.2.2, Windows XP]
Here are my findings with the same bugs:
The documentation on xslt_set_base () states that you must provide an
file:// prefix with setting the base. It seems that you should provide
the same prefix when passing files to xslt_process ().
The following works fine with me, using the "Very important" example
from above with local xml and xslt files, named 'sample.xml' and
'sample.xsl' respectively:
<?php
# create XSLT processor
$xsltProcessor = xslt_create ();
# generate filebase from working directory
$fileBase = 'file://' . getcwd () . '/';
# process the 'sample.xml' and 'sample.xsl' files
$result = xslt_process (
$xsltProcessor,
$fileBase . 'sample.xml',
$fileBase . 'sample.xsl'
);
# print the result
if ( $result ) {
echo 'Success ...';
echo '<pre>', "\n";
echo htmlentities ( $result );
echo '</pre>';
} else {
echo 'Fail due to error: ' . xslt_error($xh);
}
# free the processor resource
xslt_free ( $xsltProcessor );
?>
Alternatively, you can use the xslt_set_base function to provide the
processor with an explicit working directory:
<?php
# create XSLT processor
$xsltProcessor = xslt_create ();
# generate filebase from working directory
$fileBase = 'file://' . getcwd () . '/';
# point xslt process base to working directory
xslt_set_base ( $xsltProcessor, $fileBase );
# process the 'sample.xml' and 'sample.xsl' files
$result = xslt_process (
$xsltProcessor,
'sample.xml',
'sample.xsl'
);
# print the result
if ( $result ) {
echo 'Success ...';
echo '<pre>', "\n";
echo htmlentities ( $result );
echo '</pre>';
} else {
echo 'Fail due to error: ' . xslt_error($xh);
}
# free the processor resource
xslt_free ( $xsltProcessor );
?>
---
Hope some people will profit from this, at least i found a working
solution :)
------------------------------------------------------------------------
[2002-06-28 22:15:34] [EMAIL PROTECTED]
This should be fixed now as the related files were reverted
back to the 4.2.1 level.
------------------------------------------------------------------------
[2002-06-28 21:47:18] [EMAIL PROTECTED]
this isn't critical.
------------------------------------------------------------------------
[2002-06-24 13:04:34] [EMAIL PROTECTED]
Changed title
Somehow two different bugs got into here... Let's name it after the
real bug... (or should i open a new one)
------------------------------------------------------------------------
[2002-06-13 05:48:26] [EMAIL PROTECTED]
The same problem here.
Code which works very fine under 4.2 just spits out:
Warning: Sablotron error on line 1: XML parser error 3: no element
found in xslt.php on line 62
BC-break? or a real bug?
chregu
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/16193
--
Edit this bug report at http://bugs.php.net/?id=16193&edit=1