نحو XPath

XPath يستخدم تعبيرات المسار لاختيار العقد أو مجموعة العقد في مستند XML. يتم اختيار العقد من خلال المسار (path) أو الخطوات (steps).

مثال مستند XML

سنستخدم هذا المستند XML في الأمثلة أدناه.

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

اختيار العقد

XPath يستخدم تعبيرات المسار لاختيار العقد في مستند XML. يتم اختيار العقد من خلال التسلسل أو الخطوات.

فيما يلي قائمة ببعض تعبيرات المسار الأكثر استعمالًا:

تعبير الوصف
nodename اختيار جميع العقد الأبناء للعقد الحالي.
/ من العقد الجذر.
// من العقد الحالي الم匹配ة للإنتخاب، اختيار العقد في المستند، بغض النظر عن موقعها.
. اختيار العقد الحالي.
.. اختيار العقد الأب ل العقد الحالي.
@ اختيار الخصائص.

مثال

في الجدول أدناه، قمنا بقائمة ببعض تعبيرات المسار ومعطيات هذه التعبيرات:

عبرة المسار النتيجة
bookstore اختيار جميع العقد الأبناء لفئة bookstore.
/bookstore

اختيار عنصر الجذر bookstore.

ملاحظة: إذا بدأت المسار بشرطية ( / )، فإن هذا المسار دائمًا ما يمثل المسار المطلق إلى عنصر ما!

bookstore/book اختيار جميع عناصر book التي تنتمي إلى فئة bookstore.
//book اختيار جميع عناصر book الفرعية، بغض النظر عن موقعها داخل المستند.
bookstore//book اختيار جميع عناصر book التي تنتمي إلى فئة bookstore بغض النظر عن موقعها داخل bookstore.
//@lang اختيار جميع الخصائص التي تحمل الاسم lang.

المقدمات (Predicates)

تستخدم المقدمات للبحث عن عقد معين أو العقد الذي يحتوي على قيمة معينة.

المقدمات مدمجة في الأقواس المربعة.

مثال

في الجدول التالي، ندرج بعض عبرات المسار التي تحتوي على مقدمات ومع نتائجها:

عبرة المسار النتيجة
/bookstore/book[1] اختيار العقد book الذي يقع في المركز الأول من عناصر bookstore.
/bookstore/book[last()] اختيار العقد book الذي يقع في المركز الأخير من عناصر bookstore.
/bookstore/book[last()-1] اختيار العقد book الذي يقع في المركز الثاني الأخير من عناصر bookstore.
/bookstore/book[position()<3] اختيار أول اثنين من عناصر book التي تنتمي لعنصر bookstore.
//title[@lang] اختيار جميع عناصر title التي تحتوي على الخاصية lang.
//title[@lang='eng'] اختيار جميع عناصر title التي تحتوي على الخاصية lang بقيمة eng.
/bookstore/book[price>35.00] اختيار جميع عناصر book في عنصر bookstore، وبالإضافة إلى ذلك، يجب أن يكون قيمة price أكبر من 35.00.
/bookstore/book[price>35.00]/title اختيار جميع عناصر title لعنصر book في عنصر bookstore، وبالإضافة إلى ذلك، يجب أن يكون قيمة price أكبر من 35.00.

اختيار العقد غير المعروف

يمكن استخدام استبدالات XPath لاختيار العناصر XML غير المعروفة.

الاستبدال الوصف
* التطابق مع أي عقد عنصر.
@* التطابق مع أي عقد خاص بالخصائص.
node() التطابق مع أي نوع من العقد.

مثال

في الجدول التالي، ندرج بعض عبرات المسار ومع نتائجها:

عبرة المسار النتيجة
/bookstore/* اختيار جميع العناصر الفرعية لعنصر bookstore.
//* اختيار جميع العناصر في المستند.
//title[@*] اختيار جميع عناصر title التي تحتوي على خصائص.

اختيار مسارات متعددة

من خلال استخدام عميل "|" في عبرة المسار، يمكنك اختيار عدة مسارات.

مثال

في الجدول التالي، ندرج بعض عبرات المسار ومع نتائجها:

عبرة المسار النتيجة
//book/title | //book/price اختيار جميع عناصر book والنصوص price.
//title | //price اختيار جميع عناصر title وprice في المستند.
/bookstore/book/title | //price اختيار جميع عناصر title التابعة لعنصر bookstore وكل عناصر price في المستند.