Hi,

We are considering submitting an RFC along the following lines and welcome your 
comments:

** Provide support for XSLT 3.0, XPath 3.1, and XQuery 3.1 **

PHP is frequently used to create web services that process XML input and 
deliver HTML to web clients. Often this is done by invoking XSLT 
transformations. The XSLT processor currently provided in the PHP core, 
however, only supports the XSLT 1.0 standard published in 1999. XSLT has moved 
on significantly since then, with XSLT 2.0 in 2007 and XSLT 3.0 in 2017. The 
newer standards provide many productivity benefits: regular expressions, 
grouping, multiple output files, support for JSON, support for HTML5, 
independent compilation of modules, to name a few. By failing to support these, 
PHP is becoming a less attractive development platform for XML-centric 
applications.

XML has been superseded by JSON as the format of choice for simple 
configuration and data files, but XML remains of strategic significance for 
document-based processing and for the vast number of industry-standard data 
exchange formats defined by XML schemas. XSLT 3.0 allows XML and JSON data to 
be mixed and combined.

PHP users needing access to XSLT 2.0 or 3.0 processing typically use messy 
workarounds, such as sending transformation requests over HTTP to a Java-based 
server, or using Java bridge technologies. Recently a version of Saxon has been 
developed with a native PHP API, and the aim of this RFC is to move this 
implementation into the PHP Core. The existing XSLTProcessor will remain 
available and will continue to provide XSLT 1.0 only, so existing applications 
will not be disrupted.

Enhancing the existing XSLTProcessor is not an option: it has fallen too far 
behind for this to be viable.

The Saxon implementation of XSLT 3.0 is a recognized leader in this field. This 
proposal offers to include the open-source version of Saxon (Saxon-HE) in the 
PHP core. Saxon-HE includes support for the minimum conformance levels of XSLT 
3.0, XPath 3.1, and XQuery 3.1 defined by the W3C specifications, as well as 
some optional features such as serialization support. It achieves 100% pass 
rates for the relevant W3C test suites. (It excludes schema-aware processing, 
higher-order functions, streaming, and some other advanced options). The same 
API can also be used to invoke the commercial versions of Saxon, which support 
additional functionality and performance.

Saxon-HE/C is already available for PHP 7 as a free-standing product. Apart 
from the PHP interface, the source code is Java, and the product is built for 
the PHP platform using the (non-open-source) Excelsior JET compiler. Excelsior 
have a licensing scheme enabling the compiler to be used by open source 
projects (see: https://www.excelsiorjet.com/free 
<https://www.excelsiorjet.com/free>). Saxonica would continue to support 
development of the project and welcome contributors to help maintain and 
implement new features especially in PHP-specific areas of the project.

Info on the latest Saxon/C release: http://www.saxonica.com/saxon-c/index.xml 
<http://www.saxonica.com/saxon-c/index.xml>

I welcome your comments in this intended proposal.

kind regards,

-------------------------------
O'Neil Delpratt
Software Developer, Saxonica Limited 
Email: on...@saxonica.com <mailto:on...@saxonica.com>
Twitter: https://twitter.com/ond1 <https://twitter.com/ond1>
Tel: +44 118 946 5894
Web: http://www.saxonica.com <http://www.saxonica.com/>
Saxonica Community site: http://dev.saxonica.com <http://dev.saxonica.com/>
Bug tracking site: https://saxonica.plan.io/ <https://saxonica.plan.io/>



Reply via email to