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
                           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'


Full Bug description available at:

PHP Development Mailing List <>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to