Ejemplo de XPath

En esta sección, vamos a aprender algunos fundamentos de la sintaxis de XPath a través de ejemplos.

Documento de ejemplo XML

Vamos a usar este documento XML en los siguientes ejemplos:

"books.xml" :

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book category="COOKING">
  <title lang="en">Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>
<book category="CHILDREN">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>
<book category="WEB">
  <title lang="en">XQuery Kick Start</title>
  <author>James McGovern</author>
  <author>Per Bothner</author>
  <author>Kurt Cagle</author>
  <author>James Linn</author>
  <author>Vaidyanathan Nagarajan</author>
  <year>2003</year>
  <price>49.99</price>
</book>
<book category="WEB">
  <title lang="en">Learning XML</title>
  <author>Erik T. Ray</author>
  <year>2003</year>
  <price>39.95</price>
</book>
</bookstore>

Vea este archivo "books.xml" en su navegador.

Cargar documento XML

Todos los navegadores modernos admiten la carga de documentos XML utilizando XMLHttpRequest.

Código para la mayoría de los navegadores modernos:

var xmlhttp=new XMLHttpRequest()

Código para navegadores antiguos de Microsoft (IE 5 y 6):

var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

Seleccione nodos

Desafortunadamente, Internet Explorer y otros procesan XPath de manera diferente.

En nuestro ejemplo, se incluye código compatible con la mayoría de los navegadores principales.

Internet Explorer utiliza el método selectNodes() para seleccionar nodos de un documento XML:

xmlDoc.selectNodes(xpath);

Firefox, Chrome, Opera y Safari utilizan el método evaluate() para seleccionar nodos de un documento XML:

xmlDoc.evaluate(xpath, xmlDoc, null, XPathResult.ANY_TYPE, null);

Seleccione todos los títulos

El siguiente ejemplo selecciona todos los nodos title:

/bookstore/book/title

Prueba personalmente

Seleccione el título del primer book

El siguiente ejemplo selecciona el nodo title del primer book bajo el elemento bookstore:

/bookstore/book[1]/title

Prueba personalmente

Aquí hay un problema. El ejemplo anterior produce resultados diferentes en IE y otros navegadores.

IE5 y versiones superiores consideran [0] como el primer nodo, mientras que según el estándar de W3C, debería ser [1].

Para resolver el problema de [0] y [1] en IE5+, se puede establecer la selección de lenguaje (SelectionLanguage) para XPath.

El siguiente ejemplo selecciona el nodo title del primer book bajo el elemento bookstore:

xml.setProperty("SelectionLanguage","XPath");
xml.selectNodes("/bookstore/book[1]/title");

Prueba personalmente

Seleccione todas las precios

El siguiente ejemplo selecciona todos los textos del nodo price:

/bookstore/book/price/text()

Prueba personalmente

Seleccione los nodos price con un precio superior a 35

El siguiente ejemplo selecciona todos los nodos price con un precio superior a 35:

/bookstore/book[price>35]/price

Prueba personalmente

Selección de nodos title con un precio superior a 35

El siguiente ejemplo selecciona todos los nodos title con un precio superior a 35:

/bookstore/book[price>35]/title

Prueba personalmente