ตัวอย่าง XPath
- ทดลองด้วยตัวเอง การใช้งานตัวแทน XPath
- หน้าก่อนหน้า เรื่องย่อ XSLT
ในบทบาทนี้ ขอให้เราเรียนรู้ XPath ภาษาเบื้องต้นโดยตัวอย่าง
เอกสารตัวอย่าง XML
เราจะใช้ตัวอย่างด้านล่างนี้เพื่อ XML ดังกล่าว
"books.xml" :
<?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="WEB"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <author>Per Bothner</author> <author>Kurt Cagle</author> <author>James Linn</author> <author>Vaidyanathan Nagarajan</author> <year>2003</year> <price>49.99</price> </book> <book category="WEB"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore>
โหลดเอกสาร XML
ทุกบราวเซอร์ส่วนใหญ่ในปัจจุบันสนับสนุนวิธีการใช้ XMLHttpRequest ที่สามารถโหลดเอกสาร XML
รหัสสำหรับบราวเซอร์ส่วนใหญ่ในปัจจุบัน
var xmlhttp=new XMLHttpRequest()
รหัสสำหรับบราวเซอร์ที่เก่าแก่ของ Microsoft (IE 5 และ 6)
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
เลือกโครงสร้าง
อย่างไรก็ตาม ตัวอย่างนี้มีความแตกต่างกันใน IE และบราวเซอร์อื่นๆ
ในตัวอย่างของเรานี้ มีรหัสที่เหมาะกับสำหรับบราวเซอร์ส่วนใหญ่
Internet Explorer ใช้วิธี selectNodes() ที่มีใน XML โดยเฉพาะ
xmlDoc.selectNodes(xpath);
Firefox, Chrome, Opera และ Safari ใช้วิธี evaluate() ที่มีใน XML โดยเฉพาะ
xmlDoc.evaluate(xpath, xmlDoc, null, XPathResult.ANY_TYPE, null);
เลือกทุก title
ตัวอย่างด้านล่างนี้เลือกทุกโครงสร้าง title
/bookstore/book/title
เลือก title ของ book แรก
ตัวอย่างด้านล่างนี้เลือก element title ใต้ element bookstore จุดแรก
/bookstore/book[1]/title
/bookstore/book[price>35]/title
ที่นี่มีปัญหาเดียว
IE5 และรุ่นต่อมาจะมอง [0] ในจุดแรก แต่ตามมาตราฐาน W3C ควรเป็น [1]
เพื่อแก้ปัญหา [0] และ [1] ใน IE5+ สามารถตั้งค่าภาษาเลือก (SelectionLanguage) สำหรับ XPath
ตัวอย่างด้านล่างนี้เลือก element title ใต้ element bookstore จุดแรก
xml.setProperty("SelectionLanguage","XPath"); xml.selectNodes("/bookstore/book[1]/title");
เลือกทุกราคา
ตัวอย่างด้านล่างนี้เลือกทั้งหมดของข้อความในโครงสร้าง price
/bookstore/book/price/text()
เลือกโครงสร้างที่ราคาสูงกว่า 35
下面的例子选取价格高于 35 的所有 price 节点:
ตัวอย่างด้านล่างนี้เลือกทุกองค์ประกอบ price ที่มีราคาสูงกว่า 35
/bookstore/book[price>35]/price
เลือกองค์ประกอบ title ที่มีราคาสูงกว่า 35
ตัวอย่างด้านล่างนี้เลือกทุกองค์ประกอบ title ที่มีราคาสูงกว่า 35
- ทดลองด้วยตัวเอง การใช้งานตัวแทน XPath
- หน้าก่อนหน้า เรื่องย่อ XSLT