รู้จัก XPath ตัวชี้ทางเพื่อใช้หา element
XPath เป็นตัวชี้ทางเพื่อใช้หา element ใน ภาษา XML และ HTML เอกสารที่เป็น XML และ HTML จะมีข้อมูลที่ถูกครอบด้วยแท็กอยู่ ในส่วนของ HTML แท็กจะเป็นตัวกำหนดลักษณะที่ปรากฏของข้อมูลที่อยู่ภายในแท็ก เช่น <h1> Header </h1> tag h1 จะทำหน้าที่เน้น ตัวอักษรที่อยู่ภายในให้มีลักษณะ ใหญ่กว่าตัวอักษรที่อยู่ภายนอก มักใช้เป็นหัวเรื่องของเว็บไซต์โดยชื่อของ tag ต่าง ๆ และลักษณะของข้องมูลที่อยู่ภานใน จะถูกกำหนดไว้แล้ว ส่วน XML นั้น tag จะถูกใช้ในการเก็บข้อมูล และ โครงสร้างของข้อมูลนั้น ๆ
<?xml version="1.0" encoding="UTF-8"?><friend> <first_name>Tove</first_name> <last_name>Jani</first_name> <phone_number>+660123456789</phone_number></friend>
ตัวอย่างการเก็บข้อมูลโดยใช้ XML
ประเภทของ XPath
XPath แบ่งออกเป็น 2 ประเภท ดังนี้
1. Absolute XPath
เป็นการเขียนแบบเรียงลำดับชั้นตาม tag ไปตรง ๆ ตั้งแต่ tag ตัวแรกเรียงไปจนถึง tag ของ element ที่ต้องการค้นหา ข้อเสียของการเขียน Absolute XPath คือ การอ่านเข้าใจยาก และ ถ้า tag ลำดับก่อนหน้ามีการเปลี่ยนแปลง จะทำให้ XPath ที่เคยเขียนไว้ หา element ไม่เจอ
2. Relative XPath
เป็นการเขียนเพื่อระบุเจาะจง element ที่จะหาได้เลย ไม่ต้องไล่ลำดับจาก tag ตัวแรกก่อน โดยสามารถ ระบุ tag name หรือ attibute อย่างเช่น name class id ของ element ได้ด้วย ข้อดีของการเขียน Relative XPath คือ ความยืดหยุ่นในการใช้งาน ถ้าหากลำดับก่อนหน้ามีการเปลี่ยนแปลงก็จะไม่ส่งผลกระทบกับ XPath ที่เคยเขียนไว้
<!DOCTYPE html><html> <head> <title>Page Title</title> </head> <body> <h1>This is a Heading</h1> <p>This is a paragraph.</p> </body></html>
ตัวอย่างการเขียน XPath เพื่อใช้ชี้ตำแหน่ง Heading ของเอกสาร HTML ด้านบน
Absolute XPath
/html/body/h1
Relative XPath
//h1
XPath Syntax การชี้ตำแหน่ง
- nodename หรือ ชื่อ tag เลือก tag ทั้งหมดที่มีชื่อ nodename
- / เลือกลำดับถัดไปจากตำแหน่งปัจจุบัน
- // เลือกลำดับได้ก็ได้จากตำแหน่งปัจจุบัน
- . เลือกตำแหน่งปัจจุบัน
- .. เลือก parent ของตำแหน่งปัจจุบัน
- @ เลือก attributes
<?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>
ตัวอย่างการชี้ตำแหน่งเอกสาร XML โดยใช้ XPath
- bookstore เลือก element bookstore ทั้งหมด
- /bookstore เลือก element bookstore จากตำแหน่งปัจจุบัน
- bookstore/book เลือก element book ทั้งหมด ที่อยู่ลำดับชั้นที่ 1 ภายใน element bookstore ในตำแหน่งใดก็ได้
- //book เลือก element book ทั้งหมดที่อยู่ในลำดับใดก็ได้จากตำแหน่งปัจจุบัน
- bookstore//book เลือก element book ทั้งหมด ที่อยู่ลำดับชั้นใดก็ได้ element bookstore ในตำแหน่งใดก็ได้
- //@lang เลือก element ที่มี attributes lang ทั้งหมด
การชี้ตำแหน่งแบบเจาะจง
- /bookstore/book[1] เลือก element book ตัวแรก ที่อยู่ลำดับชั้นที่ 1 ภายใน element bookstore ในตำแหน่งปัจจุบัน
- /bookstore/book[last()] เลือก element book ตัวสุดท้าย ที่อยู่ลำดับชั้นที่ 1 ภายใน element bookstore ในตำแหน่งปัจจุบัน
- /bookstore/book[last()-1] เลือก element book ตัวก่อนหน้าตัวสุดท้าย ที่อยู่ลำดับชั้นที่ 1 ภายใน element bookstore ในตำแหน่งปัจจุบัน
- /bookstore/book[position()<3] เลือก element book 2ตัวแรก ที่อยู่ลำดับชั้นที่ 1 ภายใน element bookstore ในตำแหน่งปัจจุบัน
- //title[@lang] เลือก element title และมี attributes lang ทั้งหมด ในตำแหน่งใดก็ได้
- //title[@lang='en'] เลือก element title และมี attributes lang มีค่าเป็น “en” ทั้งหมด ในตำแหน่งใดก็ได้
- /bookstore/book[price>35.00] เลือก element book ที่มี element price มีค่ามากกว่า 35 ที่อยู่ลำดับชั้นที่ 1 ภายใน element bookstore ในตำแหน่งปัจจุบัน
- /bookstore/book[price>35.00]/title เลือก element title ที่อยูในลำดับชั้นที่ 1 ใน element book ที่มี element price มีค่ามากกว่า 35 อยู่ลำดับชั้นที่ 1 ภายใน element bookstore ในตำแหน่งปัจจุบัน