XPath - แกน
เนื่องจากเส้นทางตำแหน่งกำหนดตำแหน่งของโหนดโดยใช้พา ธ สัมบูรณ์หรือสัมพัทธ์แกนจึงถูกใช้เพื่อระบุองค์ประกอบตามความสัมพันธ์เช่น parent, child, sibling, เป็นต้น Axes ถูกตั้งชื่อเช่นนี้เนื่องจากอ้างถึงแกนที่องค์ประกอบวางอยู่สัมพันธ์กับองค์ประกอบ
ต่อไปนี้เป็นรายการค่าแกนต่างๆ
ส. | แกนและคำอธิบาย |
---|---|
1 | ancestor แสดงถึงบรรพบุรุษของโหนดปัจจุบันซึ่งรวมถึงพาเรนต์จนถึงโหนดรูท |
2 | ancestor-or-self แสดงโหนดปัจจุบันและบรรพบุรุษ |
3 | attribute แสดงถึงคุณลักษณะของโหนดปัจจุบัน |
4 | child แสดงถึงชายน์ของโหนดปัจจุบัน |
5 | descendant แสดงถึงทายาทของโหนดปัจจุบัน ลูกหลานรวมลูกของโหนดจนถึงโหนดลีฟ (ไม่มีลูกอีกต่อไป) |
6 | descendant-or-self แสดงโหนดปัจจุบันและเป็นลูกหลาน |
7 | following แสดงโหนดทั้งหมดที่มาหลังจากโหนดปัจจุบัน |
8 | following-sibling แสดงถึงพี่น้องต่อไปนี้ของโหนดบริบท พี่น้องอยู่ในระดับเดียวกับโหนดปัจจุบันและแชร์เป็นระดับบนสุด |
9 | namespace แสดงเนมสเปซของโหนดปัจจุบัน |
10 | parent แสดงพาเรนต์ของโหนดปัจจุบัน |
11 | preceding แสดงโหนดทั้งหมดที่อยู่ก่อนโหนดปัจจุบัน (เช่นก่อนแท็กเปิด) |
12 | self แสดงโหนดปัจจุบัน |
ต่อไปนี้เป็นตัวอย่างบางส่วนเกี่ยวกับการใช้แกน
firstname - เลือกชื่อที่เกี่ยวข้องกับโหนดของนักเรียน
<p><xsl:value-of select = "firstname"/></p>
<xsl:value-of select = "/class/student/preceding-sibling::comment()"/>
ตัวอย่าง
ในตัวอย่างนี้เราได้สร้างเอกสาร XML ตัวอย่าง students.xml และเอกสารสไตล์ชีต students.xsl ซึ่งใช้นิพจน์ XPath
ต่อไปนี้เป็นตัวอย่าง XML ที่ใช้
student.xml
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
<!-- Comment: This is a list of student -->
<student rollno = "393">
<firstname>Dinkar</firstname>
<lastname>Kad</lastname>
<nickname>Dinkar</nickname>
<marks>85</marks>
</student>
<student rollno = "493">
<firstname>Vaneet</firstname>
<lastname>Gupta</lastname>
<nickname>Vinni</nickname>
<marks>95</marks>
</student>
<student rollno = "593">
<firstname>Jasvir</firstname>
<lastname>Singh</lastname>
<nickname>Jazz</nickname>
<marks>90</marks>
</student>
</class>
student.xsl
<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:template match = "/" >
<html>
<body>
<xsl:value-of select = "/class/student/preceding-sibling::comment()"/>
<br/>
<xsl:text>First Student: </xsl:text>
<xsl:value-of select = "/class/student/child::firstname" />
</body>
</html>
</xsl:template>
</xsl:stylesheet>