araç köşesi

Probador de expresiones XPath

Pruebe una expresión XPath 1.0 sobre el XML que pegue; vea los elementos y atributos encontrados o el resultado de count()

Sus datos se quedan con usted. La conversión ocurre dentro del navegador; no se envía nada a ningún servidor.

Cómo funciona

XPath es el lenguaje de expresiones para elegir elementos, atributos o texto dentro de un documento XML; lo usan las pruebas de Selenium, las transformaciones XSLT y los programas que leen datos de archivos XML como las facturas CFDI. Pegue el XML en el panel izquierdo y escriba la expresión; el resultado se actualiza a la derecha mientras escribe. En el documento de ejemplo, //libro[precio<10]/titulo devuelve los títulos de los dos libros de menos de 10: Pedro Páramo y El laberinto de la soledad. Cada nodo encontrado sale en su propia línea: un elemento como XML, un atributo como nombre="valor" y el texto elegido con text() como texto simple. Las expresiones que devuelven un número (count(//libro)), un texto (string()) o verdadero/falso (//anio=1955) muestran un solo valor y la nota de abajo dice de qué tipo es. En XPath los números llevan punto decimal: escriba 9.90, no 9,90, tanto en el XML como en la expresión. Si el documento tiene prefijos como xmlns:cfdi, escríbalos igual en la expresión (//cfdi:Emisor). Si el XML está mal formado, se indica la línea y la columna del problema.

Esta herramienta también se busca como xpath online, probar xpath, xpath tester, xpath ejemplos, evaluador xpath.

¿Qué es XPath?

XPath (XML Path Language) es el estándar del W3C para elegir nodos de un documento XML con una expresión de ruta. Una ruta como /libreria/libro elige elementos, @categoria atributos y text() el texto; una condición entre corchetes filtra el resultado. Lo usan XSLT, XQuery, Selenium y muchas bibliotecas XML; los navegadores soportan la versión 1.0, publicada en 1999.

¿Qué es Espacio de nombres XML?

Un espacio de nombres (namespace) indica con una dirección a qué vocabulario pertenecen elementos que pueden llamarse igual: la declaración xmlns:cfdi="http://www.sat.gob.mx/cfd/4" dice que los elementos con prefijo cfdi: son los del CFDI del SAT. En XPath el elemento debe coincidir en nombre y en espacio de nombres; por eso el prefijo también se escribe en la expresión.

¿Qué diferencia hay entre XPath y un selector CSS?

Un selector CSS (div.producto > a) elige solo elementos y avanza hacia abajo en el documento; basta para dar estilos en el navegador y para ubicar elementos en Selenium. XPath también elige atributos y nodos de texto, puede subir al padre (..) o ir a los hermanos, filtrar por texto (//a[text()='Agregar al carrito']) y calcular con count() o sum(). Si extrae valores de datos XML o necesita encontrar un elemento por su texto, use XPath; si solo va a elegir elementos en HTML, el selector CSS es más corto.

Expresiones XPath frecuentes (con el XML de ejemplo)

Puede probar estas expresiones directamente sobre la librería de ejemplo de la página. Una barra baja un nivel, dos barras buscan a cualquier profundidad; los corchetes marcan una condición y @ un atributo.

  • //titulo → los tres elementos titulo
  • //libro[@categoria='novela']/autor → los autores de las dos novelas (Juan Rulfo y Laura Esquivel)
  • //libro[precio<10]/titulo/text() → solo el texto de los títulos
  • /libreria/libro[last()]/titulo → el título del último libro (Como agua para chocolate)
  • count(//libro) → 3; sum(//precio) → 32.4
  • //titulo/@idioma → los atributos idioma (idioma="es")

Espacios de nombres y límites honestos

Los espacios de nombres con prefijo (xmlns:cfdi="...") se leen de la declaración del documento y se usan en la expresión con el mismo prefijo. El espacio de nombres predeterminado sin prefijo (xmlns="...") es la trampa conocida de XPath 1.0: //libro no encuentra nada. En ese caso la herramienta asocia el espacio predeterminado al prefijo d:; escriba //d:libro o //*[local-name()='libro']. Si no hay coincidencias, la nota de abajo se lo recuerda.

La herramienta ejecuta XPath 1.0, la misma versión que soportan los navegadores. No hay funciones de XPath 2.0 ni 3.1 (matches, lower-case, tokenize, funciones de fecha); si escribe una, se indica cuál no existe. El texto pegado debe ser XML bien formado: HTML común con <br> sin cerrar o atributos sin comillas da error. Para probar XPath en una página web abierta, use el comando $x("//a") en las herramientas de desarrollo del navegador.

Preguntas frecuentes

¿Cómo pruebo una expresión XPath?

Pegue el XML en el panel izquierdo de esta página y escriba la expresión en la casilla XPath. Los elementos encontrados aparecen a la derecha al instante y abajo se indica cuántos nodos coincidieron. Si la expresión tiene un error de escritura o usa una función que XPath 1.0 no tiene, la herramienta lo dice claramente.

¿Qué diferencia hay entre // y /?

Una barra mira solo a los hijos directos del punto donde está: /libreria/libro elige solo los libro que cuelgan de la raíz. Dos barras buscan a cualquier profundidad: //autor encuentra todos los elementos autor, estén donde estén. Si no conoce bien la estructura del documento, empiece con //.

¿Por qué XPath no da resultados en un XML con espacio de nombres?

Si el documento declara un espacio de nombres predeterminado con xmlns="...", según XPath 1.0 la expresión sin prefijo //libro no ve los elementos de ese espacio. En esta herramienta escriba //d:libro o use //*[local-name()='libro'], que no depende del espacio de nombres. Con prefijos como xmlns:cfdi basta escribir el prefijo tal como está en el documento.

¿Mi XML se envía a un servidor?

No. La lectura del XML y la ejecución de la expresión XPath ocurren por completo en su navegador; puede probar sin riesgo una factura o un documento con datos de clientes.