¿Qué es Xpath? Todo lo que debes saber
Xpath consiste en un lenguaje de consulta, usado para buscar y seleccionar elementos de un documento XML. ¿Y qué es un documento XML? el World Wide Consortium (W3C), principal organización de estándares para la web, nos dice que se trata de "un subconjunto de SGML que está diseñado para ser usado en la web. Es un formato de texto simple y muy flexible derivado de SGML (ISO 8879)".
Un documento XML encierra una gran importancia, puesto que juega un papel crucial en el intercambio de datos en la web. Y claro, ¿cómo navegar por los datos de un documento XML? Gracias a Xpath, que utiliza una sintaxis de criterios y funciones para completar cálculos, comparaciones y para identificar nodos. En Educa Open, te explicamos en profundidad en qué consiste Xpath.
Definición de Xpath
Como venimos diciendo, XML Path Language (Xpath) es el lenguaje de descripción de rutas para documentos XML, desarrollado por el W3C. Básicamente, permite encontrar elementos dentro de un documento XML a través de una sintaxis no basada en XML. Este lenguaje, combinado con otros, nos permite extraer todo el potencial a este tipo de documentos.
Esto es así porque XML integra una serie de lenguajes. Xpath, por ejemplo, sirve para poder navegar y encontrar distintos elementos, pero existen otros. Cada uno de ellos tiene un objetivo concreto, lo que nos permite combinarlos en función de nuestras necesidades. Por ejemplo, xQuery sirve para realizar consultas en documentos XML, mientras que con XSLT podemos transformar los datos del documento.
Lee también sobre el archivo .htaccess
¿Para qué sirve Xpath?
Los programadores pueden navegar por los documentos XML gracias al lenguaje Xpath. Así, definiendo criterios de búsqueda avanzada y cálculos específicos pueden encontrar lo que desean. Además, la sintaxis que deben utilizar es intuitiva y sencilla, a la vez que eficaz. Sin duda, Xpath es el idioma imprescindible para trabajar con este tipo de documentos.
Xpath contiene una librería de 100 funciones estándar para completar distintas operaciones. Se pueden manejar cadenas, hacer operaciones numéricas, comparar fechas y muchas más tareas. A lo largo de este post, nos adentraremos en la sintaxis necesaria para que te conviertas en un auténtico especialista.
¿Cómo funciona Xpath?
Xpath entiende e interpreta los datos de un documento XML como una secuencia de elementos ordenados en una estructura de árbol. En este punto, podríamos decir que es comparable al Modelo de Objetos del Documento (DOM), que se erige como una interfaz entre HTML y JavaScript en el buscador web.
¿Pero cómo se hacen búsquedas con el lenguaje Xpath? Para localizar elementos en un documento XML debemos utilizar expresiones Xpath. Por ello, ahora nos adentraremos en los elementos más básicos de estas rutas de localización: los nodos, los ejes, las pruebas de nodos y los predicas. ¿Estás preparado? ¡Sigue leyendo!
Tipos de nodos
Los elementos de una estructura XML reciben el nombre de nodos. Sin embargo, no todos los nodos son iguales, ya que su clasificación se produce por el orden de aparición en el documento y por el entrelazado de los elementos XML. Así, podemos distinguir siete tipos de nodos dentro del modelo de datos de Xpath:
- Nodo de elemento (element node).
- Nodo de documento (root node o nodo raíz).
- Nodo de atributo (attribute node).
- Nodo de texto (text node).
- Nodo de espacio de nombres (namespace node).
- Nodo de instrucción de procesamiento (processing instruction node).
- Nodo de comentario (comment node).
Para que lo entiendas mejor desde un prisma más visual, queremos presentarte el siguiente ejemplo:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Biblioteca SYSTEM "biblioteca.dtd">
<?xml-stylesheet type="text/css" href="estilo.css"?>
<!--Este es un comentario de ejemplo-->
<biblioteca fecha="2025-01-07">
<ubicacion xmlns:sala="http://localhost/XML/sala" xmlns:deposito="http://localhost/XML/deposito">
<sala:seccion>Literatura Española</sala:seccion>
<sala:planta>Segunda</sala:planta>
<sala:pasillo>A3</sala:pasillo>
<sala:estanteria>7</sala:estanteria>
<sala:codigo>LIT-ESP</sala:codigo>
<deposito:seccion>Archivo Histórico</deposito:seccion>
<deposito:planta>Sótano</deposito:planta>
<deposito:pasillo>B2</deposito:pasillo>
<deposito:estanteria>12</deposito:estanteria>
<deposito:codigo>ARC-HIS</deposito:codigo>
</ubicacion>
<nota>Material sensible, manipular con guantes</nota>
<documentos>
<libro isbn="9788420412146">
<titulo>Cien años de soledad</titulo>
<ejemplares>3</ejemplares>
<precio>24.95</precio>
<nota>Edición conmemorativa</nota>
</libro>
<libro isbn="9788467033281">
<titulo>La Regenta</titulo>
<ejemplares>2</ejemplares>
<precio>19.95</precio>
</libro>
</documentos>
</biblioteca>
Aquí, puedes ver los siguientes tipos de nodos:
- Nodos de documento: es el nodo raíz que contiene todo el documento XML.
- Nodos de elemento: <biblioteca>, <ubicacion>, <libro>, etc.
- Nodos de atributo: fecha="2025-01-07" o isbn="9788420412146".
- Nodos de texto: el contenido de cada uno de los elementos como "Literatura Española" o "Cien años de soledad".
- Nodos de comentario como "este es un comentario de ejemplo".
- Nodos de procesamiento: <?xml version="1.0"?> y <?xml-stylesheet?>.
- Nodos de espacio de nombres: tanto xmlns:sala como xmlns:deposito.
Lee también sobre cómo hacer web scraping con Python
Adentrándonos en las rutas de localización
Para buscar entre estos nodos, necesitamos de las rutas de localización. Aunque el ejemplo anterior nos da una pista, debemos utilizar expresiones Xpath para poder navegar a través del árbol y llegar hasta el nodo deseado. ¿Qué pasa con las rutas de localización? Que pueden ser absolutas o relativas.
Según Kay (2008), las rutas absolutas empiezan siempre con una barra diagonal o doble diagonal, representando el nodo raíz del documento. Un ejemplo podría ser el siguiente: /biblioteca/documentos/libro. Este ejemplo selecciona todos los elementos "libro", que son hijos de "documentos", que a su vez son hijos de "biblioteca" desde la raíz.
Por otro lado, las rutas relativas no comienzan con una barra diagonal y se evalúan en relación al nodo contextual actual. Un ejemplo sería "libro/titulo", en el que se selecciona todos los elementos "título" que son hijos de "libro" desde el nodo actual.
Para terminar, queremos reseñarte las tres partes que conforman la expresión de ruta: eje, prueba de nodo y un número cualquiera de predicados.
- Eje: la parte que fija la dirección de la navegación.
- Prueba de nodo: filtro con el que se delimita a un conjunto de nodos.
- Predicados: añaden más filtros a los nodos seleccionados.
Aprende la sintaxis más relevante de Xpath
Operadores básicos
/
- Selecciona desde la raíz//
- Selecciona nodos en cualquier ubicación.
- Selecciona el nodo actual..
- Selecciona el nodo padre@
- Selecciona atributos
Predicados y funciones
[]
- Predicados para filtrar nodoslast()
- Selecciona el último elementoposition()
- Obtiene la posición actualcount()
- Cuenta elementossum()
- Suma valores
Operadores de comparación
=
- Igual a!=
- Diferente de>
- Mayor que<
- Menor que>=
- Mayor o igual que<=
- Menor o igual que
Wildcards
*
- Coincide con cualquier elemento@*
- Coincide con cualquier atributonode()
- Coincide con cualquier nodo
Operadores lógicos
and
- Y lógicoor
- O lógiconot()
- Negación
Referencias bibliográficas
- World Wide Web Consortium. (1998). Extensible Markup Language (XML) 1.0. W3C Recommendation. https://www.w3.org/TR/1998/REC-xml-19980210
- World Wide Web Consortium. (2008). Extensible Markup Language (XML) 1.0 (Fifth Edition). W3C Recommendation. https://www.w3.org/TR/xml/
- Kay, M. (2008). XSLT 2.0 and Xpath 2.0 Programmer's Reference (4th ed.). Wrox Press.
Artículos relacionados
Introducción a Amazon Web Services
Cuando escuchas Amazon, probablemente pienses en la plataforma de compras que revolucionó el comercio electrónico o en Prime Video, su servicio de streaming.
¿Qué son los triggers en bases de datos y cómo funcionan?
En el mundo de las bases de datos, garantizar la consistencia y la integridad de la información es una prioridad.
¿Cómo solucionar el error DNS_PROBE_FINISHED_NXDOMAIN?
Seguramente te hayas encontrado con el mensaje "DNS_PROBE_FINISHED_NXDOMAIN" en multitud de ocasiones, pero nunca te hayas detenido a pensar qué significa y de dónde viene.