XPath Examples


この節では、例を通じて、XPath の基本的な構文を学びましょう。


XML サンプル文書

以下の例では、この XML 文書を使用します。

"books.xml":

<?xml version="1.0" encoding="UTF-8"?>

<bookstore>

<book category="COOKING">
  Everyday Italian
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

<book category="CHILDREN">
  Harry Potter
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

<book category="WEB">
  XQuery Kick Start
  <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">
  Learning XML
  <author>Erik T. Ray</author>
  <year>2003</year>
  <price>39.95</price>
</book>

</bookstore>

。


XML 文書を読み込む

すべての最新ブラウザは、XMLHttpRequest を使用して XML 文書を読み込む方法をサポートしています。

ほとんどの最新ブラウザ向けのコード:

var xmlhttp=new XMLHttpRequest()

古い Microsoft ブラウザ(IE 5 および 6)向けのコード:

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


ノードを選択

残念ながら、Internet Explorer と他のブラウザでは、XPath の処理方法が異なります。

この例には、ほとんどの主要ブラウザで動作するコードが含まれています。

Internet Explorer は、XML 文書からノードを選択するために selectNodes() メソッドを使用します:

xmlDoc.selectNodes(xpath);

Firefox、Chrome、Opera および Safari は、XML 文書からノードを選択するために evaluate() メソッドを使用します:

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


すべての title を選択

次の例では、すべての title ノードを選択します:

例

/bookstore/book/title

試してみる »


最初の book の title を選択

次の例では、bookstore 要素の下の最初の book ノードの title を選択します:

例

/bookstore/book[1]/title

試してみる »

ここに問題があります。上記の例は、IE と他のブラウザでは異なる結果を出力します。

IE5 以降は

一つの解決方法!

IE5+ の

次の例では、bookstore 要素の下の最初の book ノードの title を選択します:

例

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

試してみる »


すべての価格を選択

次の例では、price ノード内のすべてのテキストを選択します:

例

/bookstore/book/price/text()

試してみる »


価格が 35 より高い price ノードを選択

次の例では、価格が 35 より高いすべての price ノードを選択します:

例

/bookstore/book[price>35]/price

試してみる »


価格が 35 より高い title ノードを選択

次の例では、価格が 35 より高いすべての title ノードを選択します:

例

/bookstore/book[price>35]/title

試してみる »
その他の拡張