XSLT 3.0
El motor XSLT 3.0 de StyleVision cumple con la propuesta de recomendación XSLT 3.0 del 8 de junio de 2017 y con la propuesta de recomendación XPath 3.1 del 21 de marzo de 2017 del consorcio W3C.
El motor XSLT 3.0 tiene las mismas características de implementación que el motor XSLT 2.0. Pero además ofrece compatibilidad con muchas de las nuevas funciones XSLT3.0, con las funciones y los operadores XPath/XQuery 3.1 y con la especificación XPath 3.1.
Nota: | la característica opcional de transmisión por secuencias no es compatible por ahora. Todo el documento se cargará en memoria independientemente del valor del atributo streamable y se procesará si hay suficiente memoria. Si no hay suficiente memoria, (i) se procesa todo el documento sin transmisión de secuencias, (ii) se procesan los constructores "guaranteed-streamable" como si se estuviera usando transmisión por secuencias y (iii) los errores de transmisión de secuencias no se reconocen. En las aplicaciones de 64 bits la ejecución sin transmisión no debería causar problemas. Sin embargo, si se dan problemas de memoria, una solución sería añadir más memoria al sistema. |
Espacios de nombres
En su hoja de estilos XSLT 3.0 debe declarar estos espacios de nombres para poder usar todos los constructores de tipo y las funciones disponibles en XSLT 3.0. Los prefijos que aparecen a continuación son los que se suelen usar, pero puede usar otros prefijos si quiere.
Espacio de nombres | Prefijo | URI del espacio de nombres |
Tipos XML Schema | xs: | http://www.w3.org/2001/XMLSchema |
Funciones XPath/XQuery 3.1 | fn: | http://www.w3.org/2005/xpath-functions |
Funciones matemáticas | math: | http://www.w3.org/2005/xpath-functions/math |
Funciones de asignación | map: | http://www.w3.org/2005/xpath-functions/map |
Funciones de matriz | array: | http://www.w3.org/2005/xpath-functions/array |
Códigos de error Xquery, XSLT y XPath | err: | http://www.w3.org/2005/xpath-functions/xqt-errors |
Funciones de serialización | output | http://www.w3.org/2010/xslt-xquery-serialization |
Por lo general, estos espacios de nombres se declaran en el elemento xsl:stylesheet o xsl:transform, como se puede ver en este extracto:
<xsl:stylesheet version="3.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
...
</xsl:stylesheet>
Es necesario tener en cuenta que:
•El motor XSLT 3.0 utiliza el espacio de nombres Funciones y operadores XPath/XQuery 3.1 como espacio de nombres de funciones predeterminado. Esto significa que puede usar funciones de este espacio de nombres en su hoja de estilos sin ningún prefijo. Si declara el espacio de nombres Funciones en su hoja de estilos con un prefijo, podrá usar el prefijo asignado en la declaración.
•Cuando se usan constructores de tipo y tipos del espacio de nombres XML Schema, el prefijo utilizado en la declaración de espacio de nombres se debe usar en la llamada al constructor de tipo (por ejemplo, xs:date).
•Algunas funciones XPath/XQuery se llaman igual que algunos tipos de datos de XML Schema. Por ejemplo, las funciones XPath fn:string y fn:boolean y los tipos de datos de XML Schema xs:string y xs:boolean. Por tanto, si usa la expresión string('Hello'), la expresión se evalúa como fn:string('Hello') y no como xs:string('Hello').