Predicatesیا اعلان
در یک فایل xml انواع node ها با مقادیر مختلف و اسامی متنوع وجود دارد
در این قسمت می خواهیم یاد بگیریم چطور می شود تنها به node خاص یا node با مقدار خاص دسترسی داشت
برای این کار از براکت باز و بسته استفاده می کنیم
و تمام شرطهای مورد نظرمان برای انتخاب تگ مورد نظر را درون براکت می نویسیم
در مثالهای زیر ما چند مسیر به همراه predicate اورده ایم و نتیجه هر دستور را می گوئیم :
۱:
/bookstore/book[1]
اولین node ای که اسم ان book است و درون node با نام bookstore قرار دارد را انتخاب می کند
مرورگرهای IE5 و قبل از ان از اندیس صفر برای اولین عنصر استفاده می کنند اما بر طبق استاندارد W3C باید اندیس اول از یک باشد
۲:
/bookstore/book[last()]
آخرین NODE به نام BOOK را که فرزند bookstore است را انتخاب می کند
۳:
/bookstore/book[last()-1]
بین node های با نام book که درون element به نام bookstore هستند ، یکی مانده به اخرین را انتخاب می کند
۴:
/bookstore/book[position()<3]
تابع position محل node مورد نظر را مشخص می کند
position<3 یعنی محل node مورد نظر یک و دو باشد
فرض کنید در تگ (node) با نام bookstore چندین تگ یا node با نام book وجود دارد
این دستور دو تگ اول با نام book را که درون تگ والد bookstore قرار دارند انتخاب می کند
۵:
//title[@lang]
اگر فقط بگوئیم
//title
یعنی تمام node هایی که اسمشان title است . صرف نظر از اینکه در کدام قسمت سند xml قرار داشته باشند را انتخاب کن
اما در این مثال
در کل سند وب ، تمام تگ های با نام titleرا که دارای صفتی به نام lang هستند انتخاب می کند
۶:
//title[@lang=’eng’]
در کل سند وب ، تمام تگ های با نام title را که دارای صفتی به نام lang با مقدار eng هستند را انتخاب می کند
۷:
/bookstore/book[price>35.00]
از درون تگ والد به نام bookstore ، تمام تگ های با نام book را که درون انها تگ یا element دیگری با نام price می باشد که محتوای ان تگ price مقداری بیشتر از ۳۵ است را انتخاب می کند
۸:
/bookstore/book[price>35.00]/title
دستورات زیر را در نظر بگیرید
تگ title درون تگ book که ان هم دورن تگ bookstore باشد را به شرطی انتخاب می کند که :
مقدار محتوای تگ price که درون تگ book است بیشتر از ۳۵ باشد
دقت شود چون price را درون براکت جلوی book نوشتیم می شود تگ دورن book