مثال XPath

در این بخش، اجازه دهید با استفاده از مثال‌ها، زبان XPath پایه‌ای را یاد بگیریم.

مستند XML نمونه

ما در مثال‌های زیر از این مستند XML استفاده خواهیم کرد:

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

این "books.xml" را در مرورگر خود مشاهده کنید.

بارگذاری مستند XML

تمام مرورگرهای مدرن از روش XMLHttpRequest برای بارگذاری مستند XML پشتیبانی می‌کنند.

برای کد‌های بیشتر مرورگرهای مدرن:

var xmlhttp=new XMLHttpRequest()

برای کد‌های قدیمی مرورگرهای مایکروسافت (IE 5 و 6):

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

انتخاب گره

متاسفانه، Internet Explorer و دیگر مرورگرها از روش‌های مختلفی برای پردازش XPath استفاده می‌کنند.

در مثال ما، کد‌هایی شامل بیشتر مرورگرهای اصلی قرار داده شده است.

Internet Explorer از روش selectNodes() برای انتخاب گره‌ها از مستند XML استفاده می‌کند:

xmlDoc.selectNodes(xpath);

Firefox، Chrome، Opera و Safari از روش evaluate() برای انتخاب گره‌ها از مستند XML استفاده می‌کنند:

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

تمام title‌ها انتخاب شوند

در مثال زیر، تمامی گره‌های title انتخاب می‌شوند:

/bookstore/book/title

پردازش شخصی

عنوان اولین book انتخاب شود

در مثال زیر، گره title اولین گره book زیر bookstore انتخاب می‌شود:

/bookstore/book[1]/title

پردازش شخصی

اینجا یک مشکل وجود دارد. مثال بالا در IE و دیگر مرورگرها نتایج متفاوتی تولید می‌کند.

نسخه‌های IE5 و بالاتر [0] را به عنوان اولین گره در نظر می‌گیرند، در حالی که بر اساس استانداردهای W3C باید [1] باشد.

برای حل مشکل [0] و [1] در IE5+، می‌توان برای XPath انتخاب زبان (SelectionLanguage) را تنظیم کرد.

در مثال زیر، گره title اولین گره book زیر bookstore انتخاب می‌شود:

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

پردازش شخصی

تمام قیمت‌ها انتخاب شوند

در مثال زیر، تمامی متن‌های گره price انتخاب می‌شوند:

/bookstore/book/price/text()

پردازش شخصی

انتخاب گره‌ای با قیمت بالاتر از 35

مثالی که انتخاب همه nodes price با قیمت بیشتر از 35 را نشان می‌دهد:

/bookstore/book[price>35]/price

پردازش شخصی

انتخاب nodes title با قیمت بیشتر از 35

مثالی که انتخاب همه nodes title با قیمت بیشتر از 35 را نشان می‌دهد:

/bookstore/book[price>35]/title

پردازش شخصی