XPath Axes (Axis)

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

เราจะใช้เอกสาร XML ในตัวอย่างด้านล่างนี้

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

ตัวย่าน XPath

ตัวย่านสามารถกำหนดตำแหน่งของกลุ่มตัวเล่าเอาไว้เพื่อตัวเล่าที่ปัจจุบัน

ชื่อของตัวย่าน ผลลัพธ์
ancestor เลือกทุกตัวเล่าที่เป็นบิดา (ปู่ ยาย และอื่นๆ) ของตัวเล่าที่ปัจจุบัน
ancestor-or-self เลือกทุกตัวเล่าที่เป็นบิดา (ปู่ ยาย และอื่นๆ) ของตัวเล่าที่ปัจจุบัน และตัวเล่าที่ปัจจุบันเอง
attribute เลือกทุกหลักโหนด attribute ของตำแหน่งปัจจุบัน
child เลือกทุกหลักโหนด child ของตำแหน่งปัจจุบัน
descendant เลือกทุกตัวเล่าที่เป็นหลาน (ลูก หลานเลี้ยง และอื่นๆ) ของตัวเล่าที่ปัจจุบัน
descendant-or-self เลือกทุกตัวเล่าที่เป็นหลาน (ลูก หลานเลี้ยง และอื่นๆ) ของตัวเล่าที่ปัจจุบัน และตัวเล่าที่ปัจจุบันเอง
following เลือกทุกตัวเล่าที่อยู่หลังจากแท็กคู่ของตัวเล่าที่ปัจจุบัน
namespace เลือกทุกตัวเล่าของชื่อสเปซ์ที่อยู่ในตัวเล่าที่ปัจจุบัน
parent เลือกตัวเล่าพ่อของตัวเล่าที่ปัจจุบัน
preceding เลือกทุกตัวเล่าที่อยู่ก่อนแท็กคู่ของตัวเล่าที่ปัจจุบัน
preceding-sibling เลือกทุกตัวเล่าเดียวกันที่อยู่ก่อนตัวเล่าที่ปัจจุบัน
self เลือกตัวเล่าที่ปัจจุบัน

ระยะทางตำแหน่งของ XPath

ระยะทางตำแหน่งสามารถเป็นระยะทางที่เป็นสายทางหรือระยะทางที่เป็นสายทางที่ไม่เป็นสายทาง:

ระยะทางที่เริ่มต้นด้วยสลัทธรรมดา (/) และระยะทางที่เป็นสายทางไม่มีสลัทธรรมดาเช่นนั้น。ในทั้งสองกรณี ระยะทางตำแหน่งรวมถึงหนึ่งหรือหลายขั้นตอน ซึ่งแยกด้วยสลัทธรรมดา:

ทางเดินสำหรับตำแหน่งเดี่ยว:

/step/step/...

ทางเดินสำหรับอักษรยนต์:

step/step/...

แต่ละอักษรยนต์ที่นับแล้วจะนับโดยอิสระตามหลักโหนดที่อยู่ในตำแหน่งปัจจุบัน

อักษรยนต์ (step) รวมถึง:

อักษรยนต์ (axis)
กำหนดความสัมพันธ์ต้นไม้ของหลักโหนดที่เลือก กับหลักโหนดปัจจุบัน
มูลความหลักโหนด (node-test)
ระบุหลักโหนดที่อยู่ในช่องโหว่ของอักษรยนต์
0 หรือมากกว่า มูลความ (predicate)
ทำให้นำไปสู่ตำแหน่งหลักโหนดที่เลือกในลำดับที่น่าจะใช้

การใช้งานคำสั่งของอักษรยนต์:

ชื่อของอักษรยนต์::node-test[มูลความ]

ตัวอย่าง

ตัวอย่าง ผลลัพธ์
child::book เลือกหลักโหนด book ที่อยู่ในตำแหน่ง child ของหลักโหนดที่อยู่ในตำแหน่งปัจจุบัน
attribute::lang เลือกหลักโหนด attribute lang ของตำแหน่งปัจจุบัน
child::* เลือกทุกหลักโหนด child ของตำแหน่งปัจจุบัน
attribute::* เลือกทุกหลักโหนด attribute ของตำแหน่งปัจจุบัน
child::text() เลือกทุกหลักโหนด text ของตำแหน่งปัจจุบัน
child::node() เลือกทุกหลักโหนด child ของตำแหน่งปัจจุบัน
descendant::book เลือกทุกหลักโหนด descendant ของ book ที่อยู่ในตำแหน่งปัจจุบัน
ancestor::book เลือกหลักโหนด ancestor ของ book ที่อยู่ในตำแหน่งปัจจุบัน
ancestor-or-self::book เลือกหลักโหนด ancestor ของ book และตำแหน่งปัจจุบัน (หากตำแหน่งปัจจุบันเป็นหลักโหนด book)
child::*/child::price เลือกทุกหลักโหนด child::price ที่อยู่ในตำแหน่ง descendant ของตำแหน่งปัจจุบัน