Ejemplos XPath

En esta sección, aprendamos algunos elementos básicos de la sintaxis 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 populares.

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 title

El siguiente ejemplo selecciona todos los nodos de title:

/bookstore/book/title

Intente hacerlo usted mismo

Seleccione el título del primer book

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

/bookstore/book[1]/title

Intente hacerlo usted mismo

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

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

Para resolver problemas con [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 del elemento bookstore:

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

Intente hacerlo usted mismo

Seleccione todas las precios

El siguiente ejemplo selecciona todo el texto de los nodos price:

/bookstore/book/price/text()

Intente hacerlo usted mismo

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

Intente hacerlo usted mismo

Seleccione los 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

Intente hacerlo usted mismo