محورهای 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 تمام فرزندان node با نام price انتخاب شوند.