محورها (XPath Axes)
در XPath، «محور (Axis)» جهت حرکت روی درخت است. یعنی نسبت یک گره به گره جاری. با محور، دقیق تر و سریع تر گره ها را پیدا می کنیم؛ مثل حرکت بین والد، فرزند، یا همسایه ها.
سند نمونه XML
این سند در مثال های صفحه استفاده شده است. با آن تمرین کن و مسیرها را تست بزن.
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
محور چیست؟
محور، رابطه گره های انتخابی با گره جاری را مشخص می کند. مثل پدر، فرزند، اجداد، یا همسایه ها. بنابراین جهت جستجو روشن می شود.
ancestor: همه اجداد گره جاری.ancestor-or-self: اجداد به همراه خود گره.attribute: همه ویژگی های گره.child: همه فرزندان گره.descendant: همه نوادگان گره.descendant-or-self: نوادگان به همراه خود گره.following: همه چیزهای بعد از تگ بسته گره.following-sibling: خواهر وبرادرهای بعدی.namespace: همه گره های فضای نام.parent: والد گره جاری.preceding: همه گره های قبل از گره جاری (به جز اجداد، ویژگی، namespace).preceding-sibling: خواهر وبرادرهای قبلی.self: خود گره جاری.
گام های مسیر (Location Step)
هر گام از سه بخش است: محور، آزمون گره (Node Test)، و صفر یا چند پرِدیکیت برای فیلتر. مسیر می تواند مطلق یا نسبی باشد.
نمونه های محورها
چند نمونه کاربردی از همان جدول منبع، برای درک سریع:
child::book: همه book های فرزند گره جاری.attribute::lang: ویژگیlangگره جاری.child::*: همه فرزندان عنصری.attribute::*: همه ویژگی ها.child::text(): همه متن های فرزند.child::node(): همه انواع فرزند.descendant::book: همه book های نواده.ancestor::book: همه book های جد.ancestor-or-self::book: همان بالا به علاوه خود گره اگر book باشد.child::*/child::price: همه price های نوه.
راهنمای ادامه
اگر تازه شروع کرده ای، اول مقدمه XPath را مرور کن. سپس سینتکس XPath را دقیق بخوان. برای عملگرها، به عملگرهای XPath برو. برای مرور خود صفحه هم از محورهای XPath استفاده کن.
جمع بندی سریع
- محور، جهت حرکت روی درخت است.
- گام ها: محور، آزمون گره، پرِدیکیت.
ancestorاجداد است؛descendantنوادگان.followingوprecedingبر پایه ترتیب سند اند.- با
*وnode()عمومی تر جستجو کن.