กลับไปหน้าบทความ

อ่าน 3 นาที

XPath 2.0

XPath 2.0 เป็นเวอร์ชันของ ภาษา XPath ที่กำหนดโดย World Wide Web Consortium (W3C) กลายเป็นข้อแนะนำเมื่อวันที่ 23 มกราคม 2550 [ 1 ] ในฐานะข้อแนะนำของ W3C จึงถูกแทนที่ด้วย XPath 3.

XPath 2.0

XPath 2.0เป็นเวอร์ชันของ ภาษา XPathที่กำหนดโดยWorld Wide Web Consortium (W3C) กลายเป็นข้อแนะนำเมื่อวันที่ 23 มกราคม 2550 [ 1 ]ในฐานะข้อแนะนำของ W3C จึงถูกแทนที่ด้วยXPath 3.0เมื่อวันที่ 10 เมษายน 2557

XPath ถูกใช้เป็นหลักในการเลือกส่วนต่างๆ ของ เอกสาร XMLโดยในที่นี้ เอกสาร XML จะถูกจำลองเป็นโครงสร้างแบบต้นไม้ของโหนด XPath อนุญาตให้เลือกโหนดได้โดยใช้เส้นทางการนำทางแบบลำดับชั้นผ่านโครงสร้างต้นไม้ของเอกสาร

ภาษานี้มีขนาดใหญ่กว่าXPath 1.0 ซึ่งเป็นรุ่นก่อนหน้าอย่างมาก และแนวคิดพื้นฐานบางอย่าง เช่น โมเดลข้อมูลและระบบประเภทข้อมูล ก็มีการเปลี่ยนแปลง ดังนั้นทั้งสองเวอร์ชันของภาษาจึงถูกอธิบายในบทความที่แยกจากกัน

XPath 2.0 ถูกใช้เป็นภาษาย่อยของXSLT 2.0และยังเป็นส่วนย่อยของXQuery 1.0 อีกด้วย ภาษาทั้งสามนี้ใช้โมเดลข้อมูล ( XDM ) ระบบประเภทข้อมูล และไลบรารีฟังก์ชันเดียวกัน และได้รับการพัฒนาร่วมกันและเผยแพร่ในวันเดียวกัน

แบบจำลองข้อมูล

ทุกค่าใน XPath 2.0 คือลำดับของรายการรายการเหล่านั้นอาจเป็นโหนดหรือค่าอะตอมิกโหนดหรือค่าอะตอมิกแต่ละรายการถือเป็นลำดับที่มีความยาวหนึ่ง ลำดับไม่สามารถซ้อนกันได้

โหนดมีเจ็ดประเภท ซึ่งสอดคล้องกับโครงสร้างต่างๆ ในไวยากรณ์ของXMLได้แก่ องค์ประกอบ แอตทริบิวต์ โหนดข้อความ ความคิดเห็น คำสั่งประมวลผล โหนดเนมสเปซ และโหนดเอกสาร (โหนดเอกสารเข้ามาแทนที่โหนดรากของXPath 1.0เนื่องจากโมเดล XPath 2.0 อนุญาตให้โครงสร้างต้นไม้มีรากอยู่ที่โหนดประเภทอื่นๆ โดยเฉพาะอย่างยิ่งองค์ประกอบ)

โหนดอาจมีประเภทหรือไม่มีประเภทก็ได้ โหนดจะได้รับประเภทจากการตรวจสอบความถูกต้องกับXML Schemaหากองค์ประกอบหรือแอตทริบิวต์ได้รับการตรวจสอบความถูกต้องกับประเภทที่ซับซ้อนหรือประเภทที่เรียบง่ายที่กำหนดไว้ใน Schema ชื่อของประเภทนั้นจะถูกแนบเป็นคำอธิบายประกอบกับโหนด และกำหนดผลลัพธ์ของการดำเนินการที่ใช้กับโหนดนั้น ตัวอย่างเช่น เมื่อทำการเรียงลำดับ โหนดที่มีคำอธิบายประกอบเป็นจำนวนเต็มจะถูกเรียงลำดับเป็นจำนวนเต็ม

ค่าอะตอมอาจเป็นของประเภทพื้นฐาน 19 ประเภทใดก็ได้ที่กำหนดไว้ใน ข้อกำหนด XML Schema (ตัวอย่างเช่น สตริง บูลีน ดับเบิล โฟลต ทศนิยม วันที่และเวลา QName และอื่นๆ) นอกจากนี้ยังอาจเป็นของประเภทที่ได้มาจากประเภทพื้นฐานเหล่านี้ได้เช่นกัน ไม่ว่าจะเป็นประเภทที่ได้มาจากระบบ เช่น จำนวนเต็มหรือชื่อ หรือประเภทที่ได้มาจากผู้ใช้ที่กำหนดไว้ในสคีมาที่ผู้ใช้เขียนขึ้นเอง

ระบบประเภท

ลำดับชั้น ของประเภทXDM

ระบบการกำหนดประเภทข้อมูลของ XPath 2.0 นั้นโดดเด่นตรงที่มันผสมผสานการกำหนดประเภทข้อมูลที่เข้มงวดและการกำหนดประเภทข้อมูลที่ไม่เข้มงวดเข้าไว้ด้วยกันในภาษาเดียว

การดำเนินการต่างๆ เช่น การคำนวณทางคณิตศาสตร์และการเปรียบเทียบค่าบูลีน จำเป็นต้องใช้ค่าอะตอมิกเป็นตัวถูกดำเนินการ หากตัวถูกดำเนินการส่งคืนโหนด (ตัวอย่างเช่น@price * 1.2) โหนดนั้น จะถูก แปลงเป็นอะตอมิก โดยอัตโนมัติ เพื่อดึงค่าอะตอมิกออกมา หากเอกสารอินพุตได้รับการตรวจสอบความถูกต้องตามสคีมาแล้ว โหนดนั้นมักจะมีคำอธิบายประเภท และสิ่งนี้จะกำหนดประเภทของค่าอะตอมิกที่ได้ (ในตัวอย่างนี้ แอตทริบิวต์priceอาจมีประเภทdecimal) หากไม่มีการใช้สคีมา โหนดนั้นจะไม่มีประเภท และประเภทของค่าอะตอมิกที่ได้จะเป็นuntypedAtomicค่าอะตอมิกที่มีประเภทจะถูกตรวจสอบเพื่อให้แน่ใจว่ามีประเภทที่เหมาะสมกับบริบทที่ใช้ ตัวอย่างเช่น ไม่สามารถคูณวันที่ด้วยตัวเลขได้ ในทางตรงกันข้าม ค่าอะตอมิกที่ไม่มีประเภทจะปฏิบัติตามระเบียบการกำหนดประเภทแบบอ่อน: มันจะถูกแปลงเป็นประเภทที่เหมาะสมกับการดำเนินการที่ใช้โดยอัตโนมัติ ตัวอย่างเช่น ในการดำเนินการทางคณิตศาสตร์ ค่าอะตอมิกที่ไม่มีประเภทจะถูกแปลงเป็นdoubleประเภท

นิพจน์เส้นทาง

เส้นทางระบุตำแหน่งในXPath 1.0ถูกเรียกว่า " นิพจน์เส้นทาง " ใน XPath 2.0 โดยทั่วไปแล้ว นิพจน์เส้นทางคือลำดับของขั้นตอนที่คั่นด้วย/ตัวดำเนินการ " " เช่นa/b/c(ซึ่งย่อมาจากchild::a/child::b/child::c) แต่ในทางที่เป็นทางการมากขึ้น " /" เป็นเพียงตัวดำเนินการไบนารีที่ใช้นิพจน์ทางด้านขวามือกับแต่ละรายการที่เลือกโดยนิพจน์ทางด้านซ้ายมือ ดังนั้นในตัวอย่างนี้ นิพจน์aจะเลือกองค์ประกอบย่อยทั้งหมดของโหนดบริบทที่มีชื่อว่า<a>; จากนั้นนิพจน์child::bจะถูกนำไปใช้กับแต่ละโหนดเหล่านี้ โดยเลือกองค์ประกอบ<b>ย่อยทั้งหมดของ<a>องค์ประกอบ ; และจากนั้นนิพจน์child::cจะถูกนำไปใช้กับแต่ละโหนดในลำดับนี้ ซึ่งจะเลือกองค์ประกอบ<c>ย่อยทั้งหมดของ<b>องค์ประกอบ เหล่านี้

ตัวดำเนินการ " /" ใน XPath 2.0 ถูกขยายให้สามารถใช้การแสดงออกใดๆ ก็ได้เป็นตัวถูกดำเนินการ: ใน XPath 1.0 ด้านขวาจะเป็นขั้นตอนแกนเสมอ ตัวอย่างเช่น สามารถใช้การเรียกฟังก์ชันทางด้านขวาได้ กฎการกำหนดประเภทสำหรับตัวดำเนินการกำหนดให้ผลลัพธ์ของตัวถูกดำเนินการตัวแรกเป็นลำดับของโหนด ตัวถูกดำเนินการด้านขวาสามารถส่งคืนโหนดหรือค่าอะตอม (แต่ไม่ใช่แบบผสม) หากผลลัพธ์ประกอบด้วยโหนด โหนดที่ซ้ำกันจะถูกกำจัดออก และโหนดจะถูกส่งคืนตามลำดับเอกสารซึ่งเป็นลำดับที่กำหนดโดยตำแหน่งสัมพัทธ์ของโหนดในโครงสร้าง XML ดั้งเดิม

ในหลายกรณี ตัวดำเนินการของ " /" จะเป็นขั้นตอนแกน: ซึ่งส่วนใหญ่ไม่เปลี่ยนแปลงจาก XPath 1.0 และมีการอธิบายไว้ในบทความเกี่ยวกับXPath 1.0

ผู้ประกอบการรายอื่น

ตัวดำเนินการอื่นๆ ที่มีให้ใช้งานใน XPath 2.0 ได้แก่:

ผู้ปฏิบัติงานผล
+, -, *, div, mod, idivการคำนวณทางคณิตศาสตร์เกี่ยวกับตัวเลข วันที่ และระยะเวลา
=, !=, <, >, <=, >=การเปรียบเทียบทั่วไป: เปรียบเทียบลำดับใดๆ ผลลัพธ์จะเป็นจริงหากคู่ของรายการใดๆ ก็ตาม ซึ่งมาจากแต่ละลำดับ ตรงตามเงื่อนไขการเปรียบเทียบ
eq, ne, lt, gt, le, geการเปรียบเทียบมูลค่า: เปรียบเทียบสินค้าแต่ละรายการ
เป็นเปรียบเทียบเอกลักษณ์ของโหนด: เป็นจริงหากตัวถูกดำเนินการทั้งสองเป็นโหนดเดียวกัน
<<, >>เปรียบเทียบตำแหน่งของโหนด โดยพิจารณาจากลำดับของเอกสาร
ยูเนียน, อินเตอร์เซกต์, ยกเว้นเปรียบเทียบลำดับของโหนด โดยถือว่าแต่ละลำดับเป็นเซต และส่งคืนค่าการรวมกัน การตัดกัน หรือผลต่างของเซตนั้น
และ หรือการเชื่อมและการแยกแบบบูลีน การปฏิเสธทำได้โดยใช้not()ฟังก์ชัน
ถึงตัวอย่างเช่น กำหนดช่วงจำนวนเต็ม1 to 10
ตัวอย่างของตรวจสอบว่าค่าดังกล่าวเป็นอินสแตนซ์ของประเภทที่กำหนดหรือไม่
รับบทเป็นแปลงค่าเป็นประเภทที่กำหนด
สามารถหล่อได้เป็นทดสอบว่าค่าหนึ่งสามารถแปลงเป็นชนิดข้อมูลที่กำหนดได้หรือไม่

สามารถเขียนนิพจน์เงื่อนไขได้โดยใช้ไวยากรณ์if (A) then B else C.

XPath 2.0 ยังมีforนิพจน์ ซึ่งเป็นส่วนย่อยเล็กๆ ของ นิพจน์ FLWORจากXQueryนิพจน์นี้จะประเมินนิพจน์สำหรับแต่ละค่าในผลลัพธ์ของนิพจน์ ทีละค่า โดยอ้างอิงถึงค่านั้นโดยใช้การ อ้างอิง ตัวแปรfor$xinXreturnYYX$x

ไลบรารีฟังก์ชัน

ไลบรารีฟังก์ชันใน XPath 2.0 ได้รับการพัฒนาเพิ่มเติมอย่างมากจากไลบรารีฟังก์ชันใน XPath 1.0 ( รายการ ที่เป็นตัวหนาคือรายการที่มีอยู่ใน XPath 1.0)

ฟังก์ชันที่มีให้ใช้งานมีดังต่อไปนี้:

วัตถุประสงค์ตัวอย่างฟังก์ชัน
การจัดการสตริงทั่วไปตัวพิมพ์เล็ก, ตัวพิมพ์ใหญ่, สตริงย่อย , สตริงย่อยก่อนหน้า , สตริงย่อยหลังจากนั้น , แปล , ขึ้นต้นด้วย , ลงท้ายด้วย, มี , ความยาวสตริง , เชื่อมต่อ , ปรับช่องว่างให้เป็นมาตรฐาน, ปรับยูนิโค้ดให้เป็นมาตรฐาน
นิพจน์ปกติจับคู่ แทนที่ แยกคำ
เลขคณิตนับ , ผลรวม , ค่าเฉลี่ย, ค่าต่ำสุด, ค่าสูงสุด, ปัดเศษ , พื้น , เพดาน , ค่าสัมบูรณ์
วันและเวลาปรับเวลาตามเขตเวลา, เวลาปัจจุบัน, วันนับจากเวลาปัจจุบัน, เดือนนับจากเวลาปัจจุบัน, จำนวนวันนับจากระยะเวลา, จำนวนเดือนนับจากระยะเวลา เป็นต้น
คุณสมบัติของโหนดชื่อ , ชื่อโหนด, ชื่อท้องถิ่น , URI ของเนมสเปซ , URI ฐาน, ว่างเปล่า
การจัดการเอกสารเอกสาร, เอกสารพร้อมใช้งาน, URI ของเอกสาร, คอลเลกชัน, รหัส , รหัสอ้างอิง
URIเข้ารหัสสำหรับ URI, หลีกเลี่ยง URI ที่เป็น HTML, แปลง IRI เป็น URI, แก้ไข URI
ชื่อคิวQName, เนมสเปซ-uri-จาก-QName, คำนำหน้าจาก-QName, แก้ไข-QName
ลำดับแทรกก่อน, ลบ, ลำดับย่อย, ดัชนีของ, ค่าที่ไม่ซ้ำกัน, ย้อนกลับ, ไม่เรียงลำดับ, ว่าง, มีอยู่
การตรวจสอบประเภทหนึ่งหรือมากกว่า, หนึ่งอย่างแน่นอน, ศูนย์หรือหนึ่ง

ความเข้ากันได้กับเวอร์ชันเก่า

เนื่องจากการเปลี่ยนแปลงในแบบจำลองข้อมูลและระบบประเภทข้อมูล ทำให้การแสดงออกบางอย่างใน XPath 2.0 ไม่ได้มีผลเหมือนกับใน XPath 1.0 ทุกประการ ความแตกต่างหลักคือ XPath 1.0 มีความยืดหยุ่นมากกว่าเกี่ยวกับการแปลงประเภทข้อมูล ตัวอย่างเช่น การเปรียบเทียบสตริงสองสตริง ( "4" > "4.0") สามารถทำได้ แต่จะเป็นการเปรียบเทียบเชิงตัวเลข ใน XPath 2.0 กำหนดให้เปรียบเทียบค่าทั้งสองเป็นสตริงโดยใช้ลำดับการเรียงลำดับที่กำหนดตามบริบท

เพื่อลดความยุ่งยากในการเปลี่ยนผ่าน XPath 2.0 ได้กำหนดโหมดการทำงานที่ปรับเปลี่ยนความหมายให้ใกล้เคียงกับพฤติกรรมของ XPath 1.0 มากที่สุด เมื่อใช้XSLT 2.0โหมดนี้จะถูกเปิดใช้งานโดยการตั้งค่าversion="1.0"เป็นแอตทริบิวต์บนxsl:stylesheetองค์ประกอบ ถึงแม้จะยังไม่สามารถใช้งานร่วมกันได้ 100% แต่ความแตกต่างที่เหลืออยู่ก็มีแนวโน้มที่จะพบได้เฉพาะในกรณีที่ไม่ปกติเท่านั้น

สนับสนุน

การรองรับ XPath 2.0 ยังมีจำกัด

  • ข้อกำหนด XPath 2.0
  • มีอะไรใหม่ใน XPath 2.0 บ้าง
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=XPath_2.0&oldid=1300944353 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ XPath 2.0

XPath 2.0 เป็นเวอร์ชันของ ภาษา XPath ที่กำหนดโดย World Wide Web Consortium (W3C) กลายเป็นข้อแนะนำเมื่อวันที่ 23 มกราคม 2550 [ 1 ] ในฐานะข้อแนะนำของ W3C จึงถูกแทนที่ด้วย XPath 3.

แบบจำลองข้อมูล

ทุกค่าใน XPath 2.0 คือ ลำดับ ของ รายการ รายการเหล่านั้นอาจเป็น โหนด หรือ ค่าอะตอมิก โหนดหรือค่าอะตอมิกแต่ละรายการถือเป็นลำดับที่มีความยาวหนึ่ง ลำดับไม่สามารถซ้อนกันได้

ระบบประเภท

ระบบการกำหนดประเภทข้อมูลของ XPath 2.0 นั้นโดดเด่นตรงที่มันผสมผสาน การกำหนดประเภทข้อมูลที่เข้มงวด และ การกำหนดประเภทข้อมูลที่ไม่เข้มงวดเข้าไว้ ด้วยกันในภาษาเดียว

นิพจน์เส้นทาง

เส้นทาง ระบุตำแหน่ง ใน XPath 1.0 ถูกเรียกว่า " นิพจน์เส้นทาง " ใน XPath 2.