محاور XPath (Axes)

مثال مستند 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

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

اسم المحور نتيجة
ancestor اختيار جميع العقد الأباء (الأب، الجد، إلخ).
ancestor-or-self اختيار جميع العقد الأباء (الأب، الجد، إلخ) والعقد الحالي نفسه.
attribute اختيار جميع الخصائص
child اختيار جميع العناصر الابن
descendant اختيار جميع العقد الابناء (ابن، حفيد، إلخ).
descendant-or-self اختيار جميع العقد الابناء (ابن، حفيد، إلخ) والعقد الحالي نفسه.
following اختيار جميع العقد بعد العقد الحالي.
namespace اختيار جميع العقد المسمى بالاسم المطلق.
parent اختيار العقد الأب.
preceding اختيار جميع العقد قبل العقد الحالي.
preceding-sibling اختيار جميع العقد الم同级 مع العقد الحالي.
self اختيار العقد الحالي.

عبرة مسار الموقع

مسار الموقع يمكن أن يكون مطلقًا أو مطلقًا.

المسار المطلق يبدأ ببداية المسار العمودي ( / )، بينما المسار المطلق لا يفعل ذلك. في كلا الحالتين، المسار الموقع يشمل خطوة واحدة أو أكثر، وكل خطوة يتم فصلها ببداية المسار العمودي:

المسار المطلق:

/step/step/...

المسار النسبي:

step/step/...

كل خطوة يتم حسابها بناءً على العقدات الموجودة في المجموعة الحالية للعقدات.

الخطوة (step) تشمل:

المحور (axis)
تعريف العلاقة الشجرة بين العقدة المحددة والعقدة الحالية
اختبار العقدة (node-test)
تعرف العقدات داخل المحور
عدد لا محدود من الجمل (predicate)
استخلاص المجموعة المحددة من العقدات المختارة

قواعد الجملة:

اسم المحور::اختبار العقدة [الجملة]

مثال

مثال نتيجة
child::book اختيار جميع العناصر الابن التي تنتمي إلى العقدة الحالية من نوع book
attribute::lang اختيار خاصية lang للعقدة الحالية
child::* اختيار جميع العناصر الابن
attribute::* اختيار جميع الخصائص
child::text() اختيار جميع العقدة النصية الابن
child::node() اختيار جميع العقدة الابن
descendant::book اختيار جميع الورث لـ book
ancestor::book اختيار جميع السلفين لـ book
ancestor-or-self::book اختيار جميع السلفين لـ book والعقدة الحالية (إذا كانت هذه العقدة هي book)
child::*/child::price اختيار جميع بنود price الابن لكل عقدة الحالية.