محورهای 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 تمام فرزندان 孙 از نقطه فعلی انتخاب شوند.