Cómo probar una expresión XPath
- Pega tu XML, abre un archivo o usa el catálogo de productos de ejemplo.
- Escribe una expresión XPath o haz clic en uno de los ejemplos. El resultado se actualiza mientras escribes, y Enter la evalúa de inmediato.
- Lee el resultado: el número de nodos que coinciden con su tipo y contenido, o el número, la cadena o el booleano que devuelve la expresión.
Guía rápida de XPath (cheat sheet)
| Expresión | Selecciona |
|---|---|
/catalog | El elemento raíz catalog |
//product | Todos los elementos product, a cualquier profundidad |
/catalog/product/name | El name de cada producto, paso a paso desde la raíz |
//product/@id | El atributo id de cada producto |
//product[@category='books'] | Los productos cuyo atributo category es books |
//product[price > 20] | Los productos con un precio superior a 20, comparado como número |
//product[contains(name, 'USB')] | Los productos cuyo nombre contiene “USB” (distingue mayúsculas y minúsculas) |
//product[not(tags)] | Los productos sin un hijo tags |
(//product)[1] | El primer producto del documento |
//product[1] | El primer producto dentro de cada elemento padre |
//product[last()] | El último producto dentro de cada elemento padre |
//name/text() | Los nodos de texto dentro de name |
//price/.. | El elemento padre de cada price |
//*[local-name()='product'] | Los elementos product de cualquier espacio de nombres |
count(//product) | El número de productos |
sum(//price) | La suma de todos los precios |
string(//product[1]/name) | El nombre del primer producto como cadena |
Espacios de nombres en XPath
XPath 1.0 no tiene espacio de nombres predeterminado. En un documento con xmlns="…", como un sitemap o una factura NF-e, //url no encuentra nada, porque los elementos pertenecen a ese espacio de nombres. Por eso el tester asigna el espacio de nombres predeterminado al prefijo x: (o d: si x ya está en uso), de modo que //x:url/x:loc funciona. Los prefijos declarados en el documento, como cfdi: en una factura CFDI, se pueden usar tal cual. En herramientas sin configuración de espacios de nombres, //*[local-name()='url'] funciona en todas partes.
Preguntas frecuentes
¿Qué versión de XPath admite el tester?
XPath 1.0, la versión integrada en todos los navegadores y en la mayoría de las bibliotecas XML. Las funciones de XPath 2.0 y posteriores, como matches(), lower-case() o string-join(), no están disponibles.
¿Por qué mi XPath no devuelve nada?
Las causas más comunes son un espacio de nombres predeterminado (usa el prefijo x: que aparece debajo de los ejemplos), las diferencias de mayúsculas y minúsculas (XPath las distingue) y las posiciones, que empiezan en 1, no en 0.
¿Cuántos resultados se muestran?
Se cuentan todas las coincidencias, y las primeras 500 se enumeran con su tipo de nodo y contenido.
¿Se sube mi XML a un servidor?
No. El XML se analiza y se consulta en tu navegador. Solo una URL que cargues se descarga a través de nuestro servidor.