XPath Examples

From http://www.w3schools.com (Copyright Refsnes Data)

# XPath Examples

Let's try to learn some basic XPath syntax by looking at some examples.

## The XML Example Document

We will use the following XML document in the examples below.

"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>

View the "books.xml" file in your browser.

## Selecting Nodes

Unfortunately, there are different ways of dealing with XML and XPath in Internet Explorer based browsers and other browsers (like Mozilla based browsers).

In our examples we have included code that should work with most major browsers.

## Select nodes for Internet Explorer based browsers

Using the Microsoft XMLDOM object to load the XML document and the selectNodes() method to select nodes from the XML document:

    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    xmlDoc.load("books.xml");

    xmlDoc.selectNodes(xpath);

## Select nodes for other browsers

Using the implementation() method of the document object to load the XML document and the evaluate() method to select nodes from the XML document:

    xmlDoc=document.implementation.createDocument("","",null);
    xmlDoc.async=false;
    xmlDoc.load("books.xml");

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

## Select titles from all book Nodes

The following path syntax selects all the title nodes:

    /bookstore/book/title

Try it yourself.

## Select the title of the first book Node

The following path syntax selects only the title of the first book node under the bookstore element:

    /bookstore/book[1]/title

Try it yourself

There is a problem with this. The example above shows different results in IE and other browsers.

IE5 and later has implemented that [0] should be the first node, but according to the W3C standard it should have been [1]!!

### A Workaround!

To solve the [0] and [1] problem in IE5+, you can set the SelectionLanguage to XPath.

The following path syntax selects only the title of the first book node under the bookstore element:

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

Try it yourself

## Select the prices

The following path syntax selects the text from all the price nodes:

    /bookstore/book/price/text()

Try it yourself.

## Selecting price Nodes with Price>35

The following path syntax selects all the price nodes with a price higher than 35:

    /bookstore/book[price>35]/price

Try it yourself.

## Selecting title Nodes with Price>35

The following path syntax selects all the title nodes with a price higher than 35:

    /bookstore/book[price>35]/title

Try it yourself.

From http://www.w3schools.com (Copyright Refsnes Data)