ล่าสุดการพัฒนาเว็บบทเรียน
 

XPath ไวยากรณ์


XPath ใช้นิพจน์เส้นทางเพื่อเลือกโหนดหรือโหนดชุดในเอกสาร XML โหนดจะถูกเลือกโดยทำตามเส้นทางหรือขั้นตอน


ตัวอย่าง XML เอกสาร

เราจะใช้เอกสาร 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>

เลือกโหนด

XPath ใช้นิพจน์เส้นทางเพื่อเลือกโหนในเอกสาร XML โหนดจะถูกเลือกโดยทำตามเส้นทางหรือขั้นตอน นิพจน์เส้นทางมีประโยชน์มากที่สุดอยู่ด้านล่าง:

การแสดงออก ลักษณะ
nodename เลือกโหนดทั้งหมดที่มีชื่อ " nodename "
/ เลือกจากโหนดราก
// เลือกโหนดในเอกสารจากโหนดปัจจุบันที่ตรงกับการเลือกที่ไม่ว่าพวกเขาอยู่ที่ไหน
. เลือกโหนดปัจจุบัน
.. เลือกแม่ของโหนดปัจจุบัน
@ เลือกคุณลักษณะ

ในตารางด้านล่างเราได้ระบุไว้แสดงออกเส้นทางบางส่วนและผลของการแสดงออกที่:

การแสดงออกเส้นทาง ผล
ร้านหนังสือ เลือกโหนดทั้งหมดที่มีชื่อ "bookstore"
/ ร้านหนังสือ เลือกร้านหนังสือองค์ประกอบราก

Note: หากเส้นทางที่เริ่มต้นด้วยการเฉือน ( / ) มันก็แสดงให้เห็นถึงเส้นทางสัมบูรณ์ไปยังองค์ประกอบ!

ร้านหนังสือ / หนังสือ เลือกองค์ประกอบหนังสือทั้งหมดที่เป็นลูกของร้านหนังสือ
// หนังสือ เลือกองค์ประกอบหนังสือทั้งหมดไม่ว่าพวกเขาจะอยู่ในเอกสาร
ร้านหนังสือ // หนังสือ เลือกองค์ประกอบหนังสือทั้งหมดที่เป็นลูกหลานขององค์ประกอบร้านหนังสือไม่ว่าที่พวกเขาอยู่ภายใต้องค์ประกอบของร้านหนังสือ
// @ lang เลือกคุณลักษณะทั้งหมดที่มีชื่อ lang

ภาค

ภาคที่มีการใช้ในการหาโหนดที่เฉพาะเจาะจงหรือโหนดที่มีค่าที่เฉพาะเจาะจง

ภาคที่ฝังตัวอยู่เสมอในวงเล็บ

ในตารางด้านล่างเราได้ระบุไว้การแสดงออกบางอย่างกับเส้นทางภาคและผลของการแสดงออกที่:

การแสดงออกเส้นทาง ผล
/ ร้านหนังสือ / หนังสือ [1] เลือกองค์ประกอบที่หนังสือเล่มแรกที่เป็นลูกขององค์ประกอบที่ร้านหนังสือ

Note: ใน IE 5,6,7,8,9 โหนดแรกคือ [0], แต่ตาม W3C มันเป็น [1] เพื่อแก้ปัญหานี้ใน IE ตั้ง SelectionLanguage เพื่อ XPath:

In JavaScript: xml setProperty("SelectionLanguage","XPath") ;
/ ร้านหนังสือ / หนังสือ [ last() ] เลือกองค์ประกอบที่หนังสือเล่มสุดท้ายที่เป็นลูกขององค์ประกอบที่ร้านหนังสือ
/ ร้านหนังสือ / หนังสือ [ last() -1] เลือกสุดท้าย แต่หนังสือเล่มหนึ่งในองค์ประกอบที่เป็นลูกขององค์ประกอบที่ร้านหนังสือ
/ ร้านหนังสือ / หนังสือ [ position() <3] เลือกแรกที่สององค์ประกอบหนังสือที่เป็นลูกขององค์ประกอบที่ร้านหนังสือ
// ชื่อ [@lang] เลือกทุกองค์ประกอบของชื่อที่มีแอตทริบิวต์ชื่อ lang
// ชื่อ [@ lang = 'en'] เลือกทุกองค์ประกอบของชื่อที่มีแอตทริบิวต์ "lang" ที่มีค่าของ "en"
/bookstore/book[price>35.00] เลือกทุกองค์ประกอบของธาตุหนังสือร้านหนังสือที่มีองค์ประกอบของราคาที่มีค่ามากกว่า 35.00
/bookstore/book[price>35.00]/title เลือกทุกองค์ประกอบชื่อขององค์ประกอบของธาตุหนังสือร้านหนังสือที่มีองค์ประกอบของราคาที่มีค่ามากกว่า 35.00

เลือกโหนดที่ไม่รู้จัก

สัญลักษณ์ XPath สามารถนำมาใช้เพื่อเลือกโหนด XML ที่ไม่รู้จัก

Wildcard ลักษณะ
* ตรงกับโหนดองค์ประกอบใด ๆ
@* ตรงกับโหนดแอตทริบิวต์ใด ๆ
node() ตรงกับโหนดของชนิดใด

ในตารางด้านล่างเราได้ระบุไว้แสดงออกเส้นทางบางส่วนและผลของการแสดงออกที่:

การแสดงออกเส้นทาง ผล
/ ร้านหนังสือ / * เลือกทุกโหนดองค์ประกอบลูกขององค์ประกอบร้านหนังสือ
// * เลือกองค์ประกอบทั้งหมดในเอกสาร
//หัวข้อ[@*] เลือกองค์ประกอบชื่อทั้งหมดที่มีอย่างน้อยหนึ่งแอตทริบิวต์ใด ๆ

การเลือกหลายเส้นทาง

โดยการใช้ | ผู้ประกอบการในการแสดงออก XPath คุณสามารถเลือกหลายเส้นทาง

ในตารางด้านล่างเราได้ระบุไว้แสดงออกเส้นทางบางส่วนและผลของการแสดงออกที่:

การแสดงออกเส้นทาง ผล
// หนังสือ / ชื่อ | // หนังสือ / ราคา เลือกทั้งหมดชื่อและราคาองค์ประกอบของธาตุหนังสือทั้งหมด
// ชื่อ | //ราคา เลือกทั้งหมดชื่อและราคาองค์ประกอบในเอกสาร
/ ร้านหนังสือ / หนังสือ / ชื่อ | //ราคา เลือกทุกองค์ประกอบชื่อขององค์ประกอบของธาตุหนังสือร้านหนังสือและทุกองค์ประกอบของราคาในเอกสาร