از axes برای انتخاب node ها استفاده می شود
مثال زیر یک برنامه 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>
تگ ریشه تگ bookstore می باشد
تگ های فرزند تگ bookstore عبارت اند از : book
تگ های فرزند تگ book عبارت اند از : title , price
axes چیست ؟ انواع ان کدام است ؟
یک axes مجموعه node های وابسته به node فعلی را مشخص می کند
انواع axes :
Ancestor
واژه لاتین ancestor به معنای جد و نیاکان است
با این دستور می توان به تمام اجداد node جاری که شامل پدر و پدر بزرگ و جدهای بالاتر است دسترسی داشت
مثلا برای تگ title تگ های book , bookstore جواب هستند
ancestor-or-self
مواردی که با این دستور انتخاب می شوند عبات اند از خود تگ جاری و تمام تگ های پدر و پدر بزرگ و جد های تگ جاری
Attribute
تمام صفات موجود در node جاری را انتخاب می کند
Child
تمام فرزندان node جاری را انتخاب می کند
Descendant
واژه descendant به معنای اولاد و نسل است
با این دستور می توان تمام فرزندان و نوه های تگ جاری انتخاب می شوند
descendant-or-self
هم خود node جاری را انتخاب می کند و هم تمام تگ های فرزند و نوه و نوه نوه و …. ان را
Following
از درون سند xml هر چیزی که بعد از تگ بسته تگ جاری قرار دارند را انتخاب می کند
following-sibling
sibling یعنی برادر و خواهر
تمام خواهر و برادرهای node جاری که بعد از مکان ان قرار دارندرا انتخاب می کند
Namespace
تمام node های از نوع namespace که مربوط به node جاری می شوند را انتخاب می کند
Parent
پدر node جاری را انتخاب می کند
Preceding
یعنی ماقبل ، سابق
تمام node هایی که قبل از node جاری در سند xml قرار دارند را انتخاب می کند به استثنای اجدادش و node های از نوع صفت و node های از نوع namespace
preceding-sibling
preceding یعنی ماقبل و سابق
تمام خواهر و براد رهای node جاری را که از نظر مکانی قبل از ان قرار دارند انتخاب می کند
Self
یعنی خودش
خود node جاری را انتخاب می کند
تعیین محل تگ ها در سند xml
محل تگ ها را می توان با ادرس دهی مطلق یا نسبی پیدا کرد
ادرس مطلق با یک / شروع کی شود و در ادرس دهی نسبی اینطور نیست
با هر روشی که اقدام می کنید مسیرها ممکن شامل چند قسمت باشند که هر قسمت با یک اسلش از هم جدا می شوند
اگر به طور ضمنی هر قسمت در مسیر را step بنامیم انگاه
روش ادرس دهی مطلق مثل مثال زیر است :
/step/step/…
و روش ادرس دهی نسبی نیز مشابه مثال زیر است :
step/step/…
حالا برای پیدا کردن مسیرها باید از فرمول زیر استفاده کنین :
Axes name :: موردی که دنبالش هستین
مثال
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 است انتخاب می کند