از 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 است انتخاب می کند