مثال‌های XPath

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

مستند XML نمونه

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

"books.xml" :

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book category="آشپزی">
  <title lang="fa">ایتالیایی روزمره</title>
  <author>گیادا دلورانتیس</author>
  <year>2005</year>
  <price>30.00</price>
</book>
<book category="کودکان">
  <title lang="fa">هری پاتر</title>
  <author>جی. کی. رولینگ</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

آموزش شخصی

انتخاب title اولین book

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

/bookstore/book[1]/title

آموزش شخصی

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

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

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

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

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

آموزش شخصی

انتخاب همه قیمت‌ها

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

/bookstore/book/price/text()

آموزش شخصی

انتخاب نقطه‌های price با قیمت بیشتر از 35

در این مثال، همه نقطه‌های price که قیمت آنها بیشتر از 35 است انتخاب می‌شوند:

/bookstore/book[price>35]/price

آموزش شخصی

انتخاب نقطه‌های title با قیمت بیشتر از 35

در این مثال، همه نقطه‌های title که قیمت آنها بیشتر از 35 است انتخاب می‌شوند:

/bookstore/book[price>35]/title

آموزش شخصی