XPath

زبان پیمایش درخت XML با XPath — انتخاب عناصر و ویژگی‌ها

XPath چیست؟

XPath زبانی برای پیمایش در اسناد XML و انتخاب عناصر و ویژگی‌هاست. نامش از عبارت XML Path Language می‌آید چون مثل مسیرهای فایل سیستم عمل می‌کند.

XPath خودش بخشی از استاندارد XSLT است اما در XQuery، XPointer، و کتابخانه‌های پارس XML همه زبان‌های برنامه‌نویسی هم استفاده می‌شود.

مثال: سند XML نمونه

<bookstore>
    <book category="web">
        <title lang="en">XPath Tutorial</title>
        <author>Sara</author>
        <price>35</price>
    </book>
    <book category="programming">
        <title lang="en">XML Guide</title>
        <author>Ali</author>
        <price>45</price>
    </book>
</bookstore>

عبارات مسیر XPath

عبارتمعنی
bookstoreعنصر bookstore (فرزند گره فعلی)
/bookstoreعنصر bookstore از ریشه
bookstore/bookعناصر book که فرزند bookstore هستند
//bookهمه عناصر book در هر جای سند
//book/titleعناصر title داخل همه bookها
//@langهمه ویژگی‌های lang

پیش‌نیازها (Predicates)

با کروشه [ ] می‌توانید شرط بگذارید:

عبارتمعنی
/bookstore/book[1]اولین book (ایندکس از ۱ شروع می‌شود!)
/bookstore/book[last()]آخرین book
/bookstore/book[position()<3]دو book اول
//title[@lang]عناصر title که ویژگی lang دارند
//title[@lang="en"]titleهایی که lang برابر en است
/bookstore/book[price>35]bookهایی که قیمت بالای ۳۵ دارند
/bookstore/book[price>35]/titleعنوان همان bookها
برخلاف اکثر زبان‌ها، ایندکس XPath از ۱ شروع می‌شود نه صفر!

انتخاب مسیرهای ناشناخته

عملگرهای XPath

عملگرتوضیحمثال
|ترکیب دو نتیجه//book/title | //book/price
+ - * divحسابی6 div 2
= != < <= > >=مقایسهprice!=30
or andمنطقیprice>30 and price<50

توابع پرکاربرد XPath

محورهای XPath (Axes)

برای پیمایش نسبی (والد، خواهربرادر، فرزند...) از محورها استفاده می‌شود:

محورمعنی
parentوالد گره فعلی
childفرزندان (پیش‌فرض)
ancestorهمه اجداد
descendantهمه فرزندان در همه سطوح
following-siblingهم‌والدهای بعدی
preceding-siblingهم‌والدهای قبلی

مثال: //title/ancestor::book — همه bookهایی که والدِ یک title هستند.

XPath را در XSLT (درس قبل)، XQuery (درس بعد) و در برنامه‌نویسی (مثل SimpleXMLElement->xpath() در PHP یا document.evaluate() در جاوااسکریپت) خواهید دید. تسلط بر XPath، کار با همه این ابزارها را ساده می‌کند.

این مبحث بخشی از دوره آموزش کامل XML است.

ابزارهای مرتبط