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>

ตรวจสอบผลลัพธ์