قوانین گرامری 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 ناشناخته استفاده می‌شود.

واژه‌های عمومی توضیح
* گره‌های عناصر را تطبیق دهید.
@* گره‌های ویژگی را تطبیق دهید.
گره() همه نوع گره را تطبیق دهید.

مثال

در جدول زیر، برخی از عبارات مسیر و نتایج این عبارات را لیست کرده‌ایم:

عبارت مسیر نتیجه
/bookstore/* تمام فرزندان عناصر bookstore را انتخاب کنید.
//* تمام عناصر موجود در مستند را انتخاب کنید.
//title[@*] تمام عناصر title دارای ویژگی را انتخاب کنید.

انتخاب چندین مسیر

با استفاده از علامت عملگر "|" در عبارات مسیر، می‌توانید چندین مسیر را انتخاب کنید.

مثال

در جدول زیر، برخی از عبارات مسیر و نتایج این عبارات را لیست کرده‌ایم:

عبارت مسیر نتیجه
//book/title | //book/price همه عناصر book را برای عناصر title و price انتخاب کنید.
//title | //price انتخاب تمام عناصر title و price در مستند.
/bookstore/book/title | //price انتخاب تمام عناصر title که به عنصر bookstore مرتبط هستند و تمام عناصر price در مستند.