# Saxon XSLT

Saxon es un procesador XSLT y XQuery creado por Michael Kay y ahora desarrollado y mantenido por su empresa, Saxonica. Existen versiones comerciales de código abierto y también de código cerrado. Existen versiones para Java, JavaScript y .NET.
La versión actual, a partir de enero de 2018, es 9.8.

## Versiones

La línea de desarrollo original de Saxon terminó con la serie de la versión 6. Esta es una serie de procesadores XSLT 1.0. La versión actual, 6.5.5, no se está desarrollando más allá del mantenimiento. La serie 6 solo está disponible para el lenguaje de programación Java.
La línea de desarrollo actual, Saxon 9, implementa las especificaciones XSLT 2.0 y XQuery 1.0, así como las características seleccionadas de los borradores de trabajo 3.0 de ambos idiomas. Saxon 9 también es capaz de procesar archivos XSLT 1.0 (XSLT 2.0 es altamente compatible con XSLT 1.0).
Desde 2004 hasta 2009, Saxon estuvo disponible en dos formas distintas: Saxon-B y Saxon-SA. Ambos fueron construidos en bases de código similares. Saxon-B era un software de código abierto publicado bajo la Licencia Pública de Mozilla, mientras que Saxon-SA era un producto comercial de código cerrado.
La diferencia entre Saxon-B y Saxon-SA era que B era "básico" mientras que SA era "consciente del esquema". Estos términos son referencias a términos en la especificación XSLT 2.0 y XQuery 1.0. Un procesador que es "consciente de esquemas" puede usar un XML Schema de W3C para definir los tipos de datos de los diversos elementos en los documentos XML de origen. Estos tipos de datos se pueden usar en los comandos XPath 2.0 y XSLT 2.0. Un procesador "básico" XSLT 2.0 no puede usar la información de escritura de datos.
Con el lanzamiento de la versión 9.2 en agosto de 2009, el paquete cambió para crear tres versiones: edición doméstica (HE), edición profesional (PE) y edición empresarial (EE). La edición de inicio es de código abierto y gratuita, las otras versiones están disponibles bajo licencias comerciales. El cambio de nombre de SA a EE se hizo para enfatizar que el producto comercial incluía ahora muchas características adicionales más allá del reconocimiento de esquemas, incluyendo un optimizador más avanzado y la capacidad para el procesamiento de XSLT y XQuery, permitiendo procesar documentos de gran tamaño sin el correspondiente grandes cantidades de memoria.
Saxon ofrece una estricta conformidad con las Recomendaciones XSLT 2.0, XPath 2.0 y 3.0, y XQuery 1.0 y 3.0 W3C, y también implementa XML Schema 1.0 y 1.1. A partir de 2016, la versión actual (9.7) también implementa la mayoría de las características en el borrador de Recomendaciones para XSLT 3.0, XPath 3.1 y XQuery 3.1.
El código fuente de Saxon está escrito en Java. Durante 2005-6 M. David Peterson y otros demostraron que Saxon podría compilarse en forma cruzada para ejecutarse en .NET utilizando el compilador cruzado IKVM.NET, lanzando Saxon.NET como un producto independiente independiente del desarrollador original. Con el lanzamiento de Saxon 8.7, Saxonica adoptó esta tecnología y desde esa versión en adelante, todas las versiones se han lanzado simultáneamente para Java y .NET. La versión .NET del producto omite características que son específicas de la plataforma Java (como la integración con JDOM, Dom4j y XOM) y, en su lugar, proporciona características que se integran con las capacidades de procesamiento XML de la plataforma .NET.
inglésEn 2012, después de una serie de prototipos, Saxonica lanzó Saxon Client Edition (Saxon-CE), una versión del producto adaptada para funcionar dentro del entorno del navegador. Esto se logra adaptando el código fuente de Java para que pueda compilarse en forma cruzada con Javascript utilizando el compilador cruzado GWT producido por Google. Saxon-CE proporciona la primera implementación de XSLT 2.0 ejecutándose en el navegador, y también amplía el lenguaje para que, en lugar de simplemente generar HTML, pueda manejar directamente la interacción del usuario. Con el lanzamiento de Saxon-CE 1.1 en febrero de 2013, el producto se convirtió en código abierto. En febrero de 2016, Michael Kay anunció que Saxonica estaba trabajando en un reemplazo para Saxon-CE escrito en Javascript puro, y denominado Saxon-JS.
Michael Kay, el autor de Saxon, fue el editor de la especificación XSLT 2.0 y también es editor del borrador XSLT 3.0.

## Características

Esta tabla muestra qué características están disponibles en las versiones actuales de Saxon. Las versiones de Java y .NET se crean a partir de una única base de código, por lo que comparten las mismas características. Los sufijos * HE *, * PE *, * EE * y * CE * se refieren respectivamente a las ediciones Home, Professional, Enterprise y Client: Saxon-HE y -CE son de código abierto, mientras que las versiones -PE y -EE están disponibles bajo una licencia comercial.
Se puede encontrar una matriz de características más detallada en the Saxonica web site.
| Característica | Saxon 6.5.5 (Java-only) | Saxon HE 9.5 (Home Edition, MPL-2.0) | Saxon PE 9.5 (Professional Edition, commercial) | Saxon EE 9.5 (Enterprise Edition, commercial) | Saxon CE 1.1 (Client Edition, JS-only, MPL-2.0) |
| XSLT 1.0 support | Sí | Via backward-compatible behavior | Via backward-compatible behavior | Via backward-compatible behavior | Via backward-compatible behavior |
| XSLT 2.0 support | -- | Sí | Sí | Sí | Sí |
| XSLT 3.0 support | -- | -- | Sí | Sí | -- |
| XPath 1.0 support | Sí | Via XPath 1.0 compatibility mode | Via XPath 1.0 compatibility mode | Via XPath 1.0 compatibility mode | Only in XSLT |
| XPath 2.0 support | -- | Sí | Sí | Sí | Only in XSLT |
| XPath 3.0 support | -- | -- | Sí | Sí | -- |
| XQuery 1.0 support | -- | Sí | Sí | Sí | -- |
| XQuery 3.0 support | -- | -- | Sí | Sí | -- |
| XQueryX support | -- | -- | -- | -- | -- |
| XQuery Updates 1.0 support | -- | -- | Sí | Sí | -- |
| XQuery/XPath Full Text support | -- | -- | -- | -- | -- |
| XML Schema 1.0 support | -- | -- | -- | Sí | -- |
| XML Schema 1.1 support | -- | -- | -- | Sí | -- |
| Serialization feature support | Sí | Sí | Sí | Sí | -- |
| Static Typing feature support | -- | -- | -- | -- | -- |
| xml:id 1.0 support | -- | Sí | Sí | Sí | Sí |
| XML stylesheet Processing Instruction support | Sí | Sí | Sí | Sí | via XSLT 1.0 bootstrap stylesheet |
| Advanced extension functions | -- | -- | Sí | Sí | -- |
| Advanced optimizer | -- | -- | -- | Sí | -- |
| Streaming | -- | -- | -- | Sí | -- |
| Bytecode Generation | -- | -- | -- | Sí | -- |