Altova XMLSpy 2024 Professional Edition 

Expresiones XPath 1.0

 

Las funciones XPath 1.0 no pueden incluir el prefijo del espacio de nombres.

Se admiten los cuatro tipos de pruebas de nodos: node(), text(), comment()y processing-instruction().

 

Expresiones XPath 2.0 y 3.1

 

Se admite el uso de literales de cadena (p.ej. "Hola") y literales numéricos (p.ej. 256). Para crear otros literales basados en tipos de XML Schema, se utiliza un constructor con el prefijo del espacio de nombres (p.ej. xs:date('2004-09-02')). El prefijo del espacio de nombres que utilice para tipos de XML Schema debe estar enlazado al espacio de nombres de XML Schema: http://www.w3.org/2001/XMLSchema. Este espacio de nombres debe estar declarado en su archivo XML.

Las funciones XPath 2.0 y 3.0 utilizadas por el evaluador de XPath pertenecen al espacio de nombres http://www.w3.org/2005/xpath-functions. Por convención, el prefijo fn: está enlazado a este espacio de nombres. Sin embargo, puesto que este espacio de nombres es el espacio de nombres de funciones predeterminado utilizado por el evaluador de XPath, no es necesario especificar un prefijo en las funciones. Si utiliza un prefijo, asegúrese de que el prefijo está enlazado al espacio de nombres de XPath Functions, que se debe declarar en el documento XML. Ejemplos de cómo usar funciones: current-date() (sin declarar el espacio de nombres de Funciones en el documento XML); fn:current-date() (sin declarar el espacio de nombres de Funciones en el documento XML o con el espacio de nombres declarado en el documento XML y enlazado al prefijo fn:). Puede omitir el prefijo del espacio de nombres incluso si el espacio de nombres de Funciones se declaró en el documento XML con o sin un prefijo. Esto se debe a que en el espacio de nombres predeterminado (el espacio de nombres predeterminado para funciones) hay una función muy usada en una expresión XPath.

Las extensiones XPath de Altova están en el espacio de nombres http://www.altova.com/xslt-extensions.

 

Nota de resumen: si utiliza constructores o tipos del espacio de nombres de XML Schema, es necesario declarar el espacio de nombres de XML Schema en el documento XML y usar los prefijos del espacio de nombres correctos en la expresión XPath. No es necesario usar un prefijo para las funciones XPath.

 

Tipos de datos en XPath 2.0 y 3.1

Si está evaluando una expresión XPath 2.0 o 3.1 para un documento XML que hace referencia a un esquema XML y es válido conforme a ese esquema, es necesario construir o convertir los tipos de datos que no se convierten implícitamente en el tipo de datos necesario mediante una operación. En los modelos de datos XPath 2.0 y 3.1 usado por el motor XPath integrado, a todos los valores de nodo atomizados desde el documento XML se les asigna el tipo de datos xs:untypedAtomic. El tipo xs:untypedAtomic funciona bien con conversiones de tipos implícitas. Por ejemplo, la expresión xs:untypedAtomic("1") + 1 da como resultado un valor de 2 porque el valor xs:untypedAtomic se asciende implícitamente al tipo xs:double mediante el operador de suma. Los operadores aritméticos ascienden implícitamente los operandos a xs:double. Los operadores de comparación ascienden los operandos a xs:string antes de realizar la comparación.

 

En algunos casos, no obstante, es necesario convertir los tipos de datos explícitamente al tipo de datos necesario. Por ejemplo, si tiene los dos elementos startDate y endDate, que en el esquema XML se definieron para tener el tipo xs:date, recibirá un mensaje de error si utiliza la expresión XPath 2.0 endDate - startDate, por ejemplo. Por otro lado, si usa xs:date(endDate) - xs:date(startDate) o (endDate cast as xs:date) - (startDate cast as xs:date), la expresión dará como resultado una secuencia singleton de tipo xs:dayTimeDuration.

 

Nota:Los motores XPath que utiliza el evaluador de XPath también son utilizados por el motor XSLT de Altova. Por tanto, las expresiones XPath 2.0 o 3.1 en hojas de estilos XSLT que no se conviertan implícitamente al tipo de datos necesario se deben construir o convertir explícitamente al tipo de datos necesario.

 

Longitud de cadena en referencias de caracteres y entidad

Cuando se utilizan referencias de caracteres y entidad como cadenas de entrada para la función string-length(), las referencias no se pueden resolver y se devuelve la longitud de la cadena de texto no resuelta. Dentro del entorno XSLT, no obstante, estas referencias tendrían significado y se devuelve la longitud de la cadena resuelta.

 

Compatibilidad con funciones XPath 2.0 y 3.1

Consulte los anexos de esta documentación.

 

© 2018-2024 Altova GmbH