قواعد 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 اختيار جميع عناصر الـ title و الـ price لعنصر الـ book.
//title | //price اختيار جميع عناصر الـ title و الـ price في المستند.
/bookstore/book/title | //price اختيار جميع عناصر الـ title التابعة لعنصر bookstore، بالإضافة إلى جميع عناصر الـ price في المستند.