Funciones XQuery
XQuery 1.0, XPath 2.0 y XSLT 2.0 comparten la misma biblioteca de funciones.
Funciones XQuery
XQuery se basa en expresiones XPath. XQuery 1.0 y XPath 2.0 comparten el mismo modelo de datos y admiten las mismas funciones y operadores.
También puede definir sus propias funciones en XQuery.
Tipos de datos XQuery
XQuery comparte los mismos tipos de datos que XML Schema 1.0 (XSD).
Ejemplos de llamadas a funciones
Una llamada a una función puede aparecer donde puede aparecer una expresión. Mira los ejemplos a continuación:
Ejemplo 1: En un elemento
<name>{upper-case($booktitle)}</name>
Ejemplo 2: en el predicado de una expresión de ruta
doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']
Ejemplo 3: en una cláusula let
let $name := (substring($booktitle,1,4))
Funciones definidas por el usuario de XQuery
Si no puede encontrar la función XQuery que necesita, puede escribir la suya propia.
Las funciones definidas por el usuario se pueden definir en la consulta o en una biblioteca separada.
Sintaxis
declare function prefix:function_name($parameter as datatype)
as returnDatatype
{
...function code here...
};
Notas sobre las funciones definidas por el usuario:
- Use la palabra clave de la función declare
- El nombre de la función debe ir precedido
- El tipo de datos de los parámetros son en su mayoría los mismos que los tipos de datos definidos en el esquema XML
- El cuerpo de la función debe estar rodeado por llaves
Ejemplo de una función definida por el usuario declarada en la consulta
declare function local:minPrice($p as xs:decimal?,$d as xs:decimal?)
as xs:decimal?
{
let $disc := ($p * $d) div 100
return ($p - $disc)
};
Below is an example of how to call the function above:
<minPrice>{local:minPrice($book/price,$book/discount)}</minPrice>