مثال على 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()

كود للتعامل مع المتصفحات القديمة من Microsoft (IE 5 و 6):

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

اختيار العناصر

للأسف، يتم التعامل مع XPath بشكل مختلف من قبل Internet Explorer والأجهزة الأخرى.

في مثالنا، يحتوي الكود على تعليمات تناسب معظم المتصفحات الشائعة.

يستخدم 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 الأول

في المثال التالي يتم اختيار عنوان العنصر book الأول في bookstore

/bookstore/book[1]/title

جربها بنفسك

هناك مشكلة. المثال السابق ينتج نتائج مختلفة في IE وأجهزة الاستقبال الأخرى.

في إصدارات IE5 وما فوق، يتم عرض [0] كالنقطة الأولى، بينما يجب أن يكون حسب معايير W3C [1].

لحل مشكلة [0] و [1] في IE5+، يمكن تعيين اختيار اللغة (SelectionLanguage) للXPath.

في المثال التالي يتم اختيار عنوان العنصر book الأول في bookstore

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

جربها بنفسك

اختيار جميع الأسعار

في المثال التالي يتم اختيار جميع النصوص في العناصر price

/bookstore/book/price/text()

جربها بنفسك

اختيار العناصر ذات السعر أعلى من 35 price

في هذا المثال، يتم اختيار جميع عناصر price التي تحتوي على سعر أكبر من 35:

/bookstore/book[price>35]/price

جربها بنفسك

اختيار عناصر title التي تحتوي على سعر أكبر من 35

في هذا المثال، يتم اختيار جميع عناصر title التي تحتوي على سعر أكبر من 35:

/bookstore/book[price>35]/title

جربها بنفسك