ID: 8895
User Update by: [EMAIL PROTECTED]
Old-Status: Closed
Status: Open
Bug Type: Sablotron XSL
Description: xslt_process() documentation problem
This is ridiculous - this is the second time this bug has been closed by someone who
never bothered to read the report!
According to the documentation:
The xslt_process() takes a string containing the XSLT stylesheet as its first
argument, it takes a second string containing the XML data you want to transform and
then a third string containing the results of the transformation. xslt_process() will
return true on success and false on failure, to get the error number and error string
if an error occurs use the xslt_errno() and xslt_error() functions.
There is no conceivable way returning an untrappable fatal error can be seen as a
simple return false, particularly since the comment about errors suggests that your
script will continue executing if xslt_process() encounters an error. Currently,
there's no way to call xslt_errno() / xslt_error().
There are three options at this point: actually fixing the Sablotron extension or
changing the documentation to say something like "If the transform fails, PHP will
immediately terminate with a fatal error". Or you could just close it a 3rd time with
a bogus comment - I won't bother reopening it, as I don't use Sablotron regularly.
This still reproduces with 4.0.5-dev, built from a CVS checkout on 3/26.
Previous Comments:
---------------------------------------------------------------------------
[2001-04-05 14:16:06] [EMAIL PROTECTED]
this is the correct behavior, if the transformation fails so
will php.
---------------------------------------------------------------------------
[2001-02-14 10:53:39] [EMAIL PROTECTED]
Please try to read the bug report before closing it. xslt_process() does *NOT* return
false with some errors. Instead, it returns a PHP fatal error which cannot be trapped
using @.
---------------------------------------------------------------------------
[2001-02-14 06:19:21] [EMAIL PROTECTED]
not a bug. xslt_process() returns false on failure, you can supress errors using the
@ sign.
---------------------------------------------------------------------------
[2001-01-25 02:02:18] [EMAIL PROTECTED]
According to the documentation xslt_process() is supposed to return false and allow
you to check errors with xslt_errno() & xslt_error().
I found several situations where a validation error in the XSL stylesheet would cause
it to instead fail with a fatal error:
PHP Fatal error: msgtype: error
in /var/www/stone2/index.php on line 18
(One example of an error would be a HTML tag with unquoted parameters (e.g. BORDER=0),
which is legal for numeric values in HTML but not XML)
Needless to say, this made debugging rather tricky as it never reached the error
display in my code:
if (xslt_process($XSL, $XML, $result)) {
echo $result;
} else {
echo '<P>XSL transformation error: </P>';
echo xslt_errno() . ': ' . xslt_error();
}
PHP config info:
PHP Version 4.0.4pl1
System Linux gigante 2.2.18pre21 #1 Sat Nov 18 18:47:15 EST 2000 i686
unknown
Build Date Jan 24 2001
Configure Command './configure' '--with-apxs' '--enable-shared'
'--with-bz2' '--with-java=/usr/local/jdk1.3' '--with-gettext'
'--with-mcrypt' '--with-zlib' '--with-openssl=/usr/local/ssl'
'--enable-magic-quotes' '--enable-calendar' '--with-curl'
'--with-mcrypt' '--with-dom=/usr/local/lib' '--enable-ftp'
'--enable-gd-imgstrttf' '--with-gd' '--with-jpeg-dir' '--with-ttf'
'--with-t1lib' '--with-imap-ssl' '--with-imap' '--with-ldap'
'--with-mysql' '--with-pdflib=/usr/local/lib' '--with-zlib-dir'
'--with-jpeg-dir' '--with-png-dir' '--with-tiff-dir' '--with-pgsql'
'--with-pspell' '--with-readline' '--with-sablot'
'--with-sablot-errors-descriptive' '--enable-trans-sid'
'--enable-shmop' '--enable-sockets' '--with-swf' '--enable-sysvsem'
'--enable-sysvshm' '--enable-inline-optimization'
'--enable-memory-limit'
---------------------------------------------------------------------------
Full Bug description available at: http://bugs.php.net/?id=8895
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]