XQuery 1.0

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Anexos > Información sobre motores > Información sobre motores XSLT y XQuery >

XQuery 1.0

Temas de este apartado:

 

Especificaciones con las que cumple el motor
Compatibilidad con esquemas
Codificación
Espacios de nombres
Fuentes XML y validación
Comprobación de tipos estática y dinámica
Módulos biblioteca
Funciones externas
Intercalaciones
Precisión de datos numéricos
Compatibilidad con instrucciones XQuery

 

Especificaciones compatibles

El motor XQuery 1.0 de MapForce cumple con la recomendación XQuery 1.0 del 14 de diciembre de 2010 del W3C. El estándar XQuery concede libertad a la hora de implementar muchas características. A continuación explicamos cómo se implementaron estas características en el motor XQuery 1.0 de MapForce.

 

Compatibilidad con esquemas

El motor XQuery 1.0 está preparado para esquemas.

 

Codificación

El motor XQuery 1.0 es compatible con las codificaciones de caracteres UTF-8 y UTF-16.

 

Espacios de nombres

Se predefinen estos URI de espacios de nombres y sus enlaces asociados.

 

Espacio de nombres

Prefijo

URI del espacio de nombres

Tipos XML Schema

xs:

http://www.w3.org/2001/XMLSchema

Schema instance

xsi:

http://www.w3.org/2001/XMLSchema-instance

Funciones integradas

fn:

http://www.w3.org/2005/xpath-functions

Funciones locales

local:

http://www.w3.org/2005/xquery-local-functions

 

Es importante tener en cuenta que:

 

El motor XQuery 1.0 entiende que los prefijos de la tabla anterior están enlazados con los correspondientes espacios de nombres.
Como el espacio de nombres de funciones integradas (ver tabla) es el espacio de nombres de funciones predeterminado de XQuery, no es necesario usar el prefijo fn: cuando se invocan funciones integradas (por ejemplo, string("Hello") llamará a la función fn:string). No obstante, el prefijo fn: se puede utilizar para llamar a una función integrada sin necesidad de declarar el espacio de nombres en el prólogo de la consulta (por ejemplo: fn:string("Hello")).
Puede cambiar el espacio de nombres de funciones predeterminado declarando la expresión default function namespace en el prólogo de la consulta.
Cuando use tipos del espacio de nombres XML Schema, puede usar el prefijo xs: sin necesidad de declarar los espacios de nombres de forma explícita ni enlazar estos prefijos a los espacios de nombres en el prólogo de la consulta. (Ejemplo: xs:date y xs:yearMonthDuration.) Si quiere usar otros prefijos para el espacio de nombres de XML Schema, estos se deben declarar en el prólogo de la consulta. (Ejemplo: declare namespace alt = "http://www.w3.org/2001/XMLSchema"; alt:date("2004-10-04").)
Recuerde que los tipos de datos untypedAtomic, dayTimeDuration y yearMonthDuration se movieron del espacio de nombres XPath Datatypes al espacio de nombres XML Schema (es decir,  ahora es xs:yearMonthDuration.)

 

Si se asignaron mal los espacios de nombres para funciones, constructores de tipo, pruebas de nodo, etc., se emite un error. Sin embargo, recuerde que algunas funciones se llaman igual que los tipos de datos de esquema (p. ej. fn:string y fn:boolean.) (Se definen xs:string y xs:boolean.) El prefijo del espacio de nombres determina si se usa la función o el constructor de tipo.

 

Documento XML de origen y validación

Los documentos XML que se utilizan para ejecutar un documento XQuery con el motor XQuery 1.0 deben tener un formato XML correcto. Sin embargo, no es necesario que sean válidos con respecto a un esquema XML. Si el archivo no es válido, el archivo no válido se carga sin información de esquema. Si el archivo XML está asociado a un esquema externo y es válido con respecto a dicho esquema, se genera información posterior a la validación de esquema, que se utilizará para evaluar la consulta.

 

Comprobación de tipos estática y dinámica

En la fase de análisis estático se revisan aspectos de la consulta como la sintaxis, si existen referencias externas (p. ej. para módulos), si las funciones y variables que se invocan están definidas, etc. Si se detecta un error en la fase de análisis estático, se notifica y la ejecución se interrumpe.

 

La comprobación dinámica de tipos se realiza en tiempo de ejecución, cuando la consulta se ejecuta. Si un tipo no es compatible con los requisitos de una operación, se emite un error. Por ejemplo, la expresión xs:string("1") + 1 devuelve un error porque la operación de suma no se puede llevar a cabo en un operando de tipo xs:string.

 

Módulos biblioteca

Los módulos biblioteca almacenan funciones y variables para poder volver a utilizarlas. El motor XQuery 1.0 es compatible con el uso de módulos almacenados en un solo archivo XQuery externo. Dicho archivo de módulo debe incluir una declaración module en su prólogo que apunte a un espacio de nombres de destino Por ejemplo:

 

module namespace libns="urn:module-library";

declare variable $libns:company := "Altova";

declare function libns:webaddress() { "http://www.altova.com" };

 

Todas las funciones y variables declaradas en el módulo pertenecen al espacio de nombres asociado al módulo. El módulo se importa en un archivo XQuery con la instrucción import module del prólogo de la consulta. La instrucción import module solamente importa funciones y variables declaradas directamente en el archivo de módulo biblioteca. Por ejemplo:

 

import module namespace modlib = "urn:module-library" at "modulefilename.xq";  

if        ($modlib:company = "Altova")
then modlib:webaddress()  
else error("No match found.")

 

Funciones externas

Las funciones externas son incompatibles con el motor XQuery 1.0, es decir, todas las expresiones que usen la palabra clave external. Por ejemplo:

 

declare function hoo($param as xs:integer) as xs:string external;

 

Intercalaciones

La intercalación predeterminada es la intercalación de puntos de código Unicode, que compara las cadenas de texto según sus puntos de código Unicode. Otras intercalaciones compatibles son las intercalaciones ICU que se enumeran aquí. Para usar una intercalación concreta, indique su URI tal y como aparece en la lista de intercalaciones compatibles. Las comparaciones de cadenas de texto,  incluidas las comparaciones para las funciones fn:max y fn:min, se harán según la intercalación especificada. Si no se indica la opción de intercalación, se utiliza la intercalación de puntos de código Unicode  predeterminada.

 

Precisión de tipos numéricos

 

El tipo de datos xs:integer es de precisión arbitraria, es decir, puede representar un número de dígitos cualquiera.
El tipo de datos xs:decimal tiene un límite de 20 dígitos después del punto decimal.
Los tipos de datos xs:float y xs:double tienen una precisión limitada de 15 dígitos.

 

Compatibilidad con instrucciones XQuery

La instrucción Pragma no es compatible. Si se encuentra, se ignora y en su lugar se evalúa la expresión de reserva.

 


© 2019 Altova GmbH