6.6.- Funciones.
Ahora que conocemos las cláusulas que sustentan el lenguaje XQuery, vamos a ocuparnos de las funciones que soporta.
Estas son funciones matemáticas, de cadenas, para el tratamiento de expresiones regulares, comparaciones de fechas y horas, manipulación de nodos XML, manipulación de secuencias, comprobación y conversión de tipos y lógica booleana. Además permite definir funciones propias y funciones dependientes del entorno de ejecución del motor XQuery. Las funciones más importantes se muestran a continuación:
- Funciones numéricas
floor()
, que devuelve el valor numérico inferior más próximo al dado.ceiling()
, que devuelve el valor numérico superior más próximo al dado.round()
, que redondea el valor dado al más próximo.count()
, determina el número deítems
en una colección.min()
omax()
, devuelven respectivamente el mínimo y el máximo de los valores de los nodos dados.avg()
, calcula el valor medio de los valores dados.sum()
, calcula la suma total de una cantidad deítems
dados.
- Funciones de cadenas de texto
concat()
, devuelve una cadena construida por la unión de dos cadenas dadas.string-length()
, devuelve la cantidad de caracteres que forman una cadena.startswith(), ends-with()
, determinan si una cadena dada comienza o termina, respectivamente, con otra cadena dada.upper-case(), lower-case()
, devuelve la cadena dada en mayúsculas o minúsculas respectivamente.
- Funciones de uso general
empty()
, devuelve “true
” cuando la secuencia dada no contiene ningún elemento.exits()
, devuelve “true
” cuando una secuencia contiene, al menos, un elemento.distinct-values()
, extrae los valores de una secuencia de nodos y crea una nueva secuencia con valores únicos, eliminando los nodos duplicados.data()
, devuelve el valor de los elementos que recibe como argumentos, es decir, sin etiquetas.
- Cuantificadores existenciales:
some, every
, permiten definir consultas que devuelven algún, o todos los elementos, que verifiquen la condición dada.
Ejemplo de la función data
Esta consulta devuelve todos los títulos, incluyendo las etiquetas:
for $x in doc("libros.xml")/biblioteca/libros/libro/titulo
return $x
El resultado con el fichero de ejemplo sería:
<titulo>Learning XML</titulo>
<titulo>XML Imprescindible</titulo>
<titulo>XML Schema</titulo>
<titulo>XPath Essentials</titulo>
<titulo>Beginning XSLT 2.0: Form Novice to Professional</titulo>
<titulo>XQuery</titulo>
Utilizando la función data:
for $x in doc("libros.xml")/biblioteca/libros/libro/titulo
return data($x)
...se obtiene:
Learning XML
XML Imprescindible
XML Schema
XPath Essentials
Beginning XSLT 2.0: Form Novice to Professional
XQuery
Además de estas funciones que están definidas en el lenguaje, XQuery permite al desarrollador construir sus propias funciones:
declare nombre_funcion($param1 as tipo_dato1, $param2 as tipo_dato2,… $paramN as tipo_datoN)
as tipo_dato_devuelto
{
...CÓDIGO DE LA FUNCIÓN...
}