¿Cómo probar una expresión XPath?
Pega tu XML a la izquierda, o arrastra un archivo sobre ese cuadro. Escribe una expresión en el campo XPath y pulsa Intro o Evaluar. Cada nodo encontrado aparece con su tipo, una ruta corta como /catalog/book[2]/title, su línea y su contenido. Ver en la entrada selecciona ese nodo en tu XML. Una función como count() da en cambio un número, y el resultado lo muestra. Copiar y Descargar dan el resultado como texto plano. Cargar ejemplo abre un catálogo de libros para que pruebes enseguida.
¿Por qué mi expresión no devuelve nada?
Nueve de cada diez veces, por un espacio de nombres. Cuando el elemento raíz tiene xmlns="…", cada elemento sin prefijo pertenece a ese espacio de nombres predeterminado, y un simple //book ya no lo encuentra. Este evaluador da un prefijo al espacio de nombres predeterminado, d salvo que elijas otro en Espacios de nombres, y sugiere la expresión corregida cuando detecta el problema. Otras causas habituales: una errata en un nombre, porque XML distingue mayúsculas y minúsculas, o una @ que falta delante de un atributo.
Ejemplos de expresiones para probar
//book/title lista todos los títulos. //book[@lang='en'] se queda con los libros cuyo atributo lang vale en. count(//book) los cuenta, y sum(//price) suma los precios. //title[contains(., 'Dark')] encuentra los títulos que contienen una palabra, y //book[last()] toma el último libro. Para seleccionar el propio atributo, escribe //book/@id. La prueba text() devuelve nodos de texto, mientras que string() devuelve el texto completo de un elemento.
¿Qué versión de XPath admite este evaluador?
XPath 1.0, la versión integrada en todos los navegadores, con sus 27 funciones. XPath 2.0 y 3.1 no se admiten, así que lower-case(), matches() o if … then … else dan un mensaje claro, a menudo con una alternativa en 1.0. Las mismas expresiones funcionan en una hoja de estilo XSLT 1.0: pruébalas en el tester XSLT. Si tu XML tiene un error de sintaxis, el evaluador muestra primero su línea, como hace el validador XML.
¿Esta herramienta sube mi XML?
No. La expresión se evalúa en esta pestaña del navegador, y las reglas de seguridad de esta página bloquean las peticiones de red. No se guarda nada: cierras la pestaña y tu XML desaparece. Para hacer legible antes un archivo largo de una sola línea, usa el formateador XML.
Preguntas
¿Por qué //book no encuentra nada si mi XML tiene elementos book?
Seguramente tu XML tiene un espacio de nombres predeterminado, escrito xmlns="…" en la raíz. En XPath 1.0, un nombre sin prefijo solo encuentra elementos sin espacio de nombres. Este evaluador da un prefijo al espacio de nombres predeterminado, d por defecto, así que escribe //d:book.
¿Puedo usar funciones de XPath 2.0 o 3.1?
No. Los navegadores incluyen XPath 1.0, y este evaluador usa el motor del navegador. Funciones como lower-case() o matches() devuelven un mensaje claro, a menudo con una forma de obtener el mismo resultado en XPath 1.0.
¿Qué diferencia hay entre text() y string()?
text() selecciona los nodos de texto que están directamente dentro de un elemento, así que obtienes nodos. string() devuelve el texto de todo el elemento, hijos incluidos, como un solo valor.
¿Cómo cuento o filtro nodos?
count(//item) da un número. //item[contains(@name, 'pro')] se queda con los item cuyo atributo name contiene pro. //item[position() <= 3] se queda con los tres primeros, y //item[last()] con el último.
¿Qué tamaño puede tener mi XML?
Hasta 10 MB. La lista muestra los 500 primeros resultados, y Copiar o Descargar los dan todos como texto plano.
¿Se envía mi XML a algún sitio?
No. La expresión se ejecuta en esta pestaña del navegador, y la página no tiene permiso para enviar peticiones de red. Cierras la pestaña y tu XML desaparece.