XQuery es un lenguaje potente diseñado para consultar y manipular información almacenada en formato XML. Este artículo ofrece un panorama general de algunas de las funciones y utilidades más útiles de XQuery, ayudándote a entender cómo puedes emplearlas en tus proyectos.
Funciones Numéricas
XQuery proporciona varias funciones numéricas para facilitar la manipulación y análisis de datos numéricos:
floor()
: Devuelve el mayor número entero que es menor o igual al número dado.ceiling()
: Retorna el menor número entero mayor o igual al número especificado.round()
: Redondea al entero más cercano.count()
: Cuenta el número de ítems en una colección.min()
ymax()
: Devuelven el valor mínimo y máximo, respectivamente.avg()
: Calcula el promedio de un conjunto de valores.sum()
: Retorna la suma total de los valores especificados.
Funciones de Cadena de Texto
Para trabajar con textos, XQuery ofrece funciones que permiten desde concatenar cadenas hasta cambiar la capitalización:
concat()
: Combina dos o más cadenas de texto.string-length()
: Devuelve la longitud de una cadena.starts-with()
,ends-with()
: Verifican si una cadena comienza o termina con otra cadena.upper-case()
,lower-case()
: Convierten una cadena a mayúsculas o minúsculas, respectivamente.
Funciones de Uso General
Estas funciones son cruciales para el control de flujos y la gestión de datos:
empty()
: Devuelvetrue
si la secuencia proporcionada está vacía.exists()
: Devuelvetrue
si la secuencia contiene al menos un elemento.distinct-values()
: Extrae valores únicos de una secuencia de nodos.some
,every
: Funciones que permiten realizar comprobaciones condicionales sobre los elementos de una secuencia.
Ejemplo Práctico
Para ilustrar el uso de XQuery, consideremos una consulta que extrae información sobre libros y sus autores de un documento XML:
for $b in doc("libros.xml")//libro
return <libro>{ $b/titulo }
{ for $a at $i in $b/autor
where $i <= 1
return <autor>{string($a/nombre), ", ", string($a/apellido)}</autor> }
{if (count($b/autor) > 1)
then <autor>abc.</autor>
else () }
</libro>
Creación de Funciones Personalizadas
XQuery también permite la definición de funciones propias, lo que aumenta su flexibilidad y potencia. Por ejemplo, una función para calcular un precio con descuento podría definirse de la siguiente manera:
declare function precioMinimo($p as xs:decimal?, $d as decimal?) as xs:decimal? {
let $disc := ($p * $d) div 100
return ($p - $disc)
}
Para invocar esta función, se usaría:
<precioMinimo>{precioMinimo($libros/precio, $libros/descuento)}</precioMinimo>
Operadores y Comparaciones
XQuery incluye operadores para realizar comparaciones de valores y generales:
- Comparaciones de valores:
eq
,ne
,lt
,le
,gt
,ge
. - Comparaciones generales:
=
,!=
,<
,<=
,>
,>=
.
Secuencia de Nodos
Las operaciones sobre secuencias de nodos son vitales para el manejo de conjuntos de datos XML:
union
: Combina dos secuencias de nodos.intersect
: Devuelve los nodos que están presentes en ambas secuencias.except
: Elimina los nodos de la primera secuencia que no están en la segunda.
XQuery es una herramienta indispensable para cualquier desarrollador que trabaje con datos en formato XML, proporcionando funciones ricas y flexibles para la manipulación y consulta de datos complejos.