XPath軸線


由於位置路徑使用絕對路徑或相對路徑定義節點的位置,因此軸用於通過它們的關係來識別元素,如父,子,兄弟節點等。軸的命名是因為它們指的是元素相對於元素所在的軸。

以下是各種Axis值的列表。

序號 描述
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 - 選擇與<student>節點相關的名字。

<p><xsl:value-of select = "firstname"/></p>
<xsl:value-of select = "/class/student/preceding-sibling::comment()"/>

範例

在這個例子中,我們建立了一個範例XML文件students.xml,及其樣式表文件students.xsl,它使用了XPath表示式。

以下是使用的範例XML。檔案:students.xml -

<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
   <student rollno = "393">
      <firstname>Dinkar</firstname>
      <lastname>Su</lastname>
      <nickname>MaXX</nickname>
      <marks>88</marks>
   </student>
   <student rollno = "493">
      <firstname>Vaneet</firstname>
      <lastname>Lee</lastname>
      <nickname>Vicky</nickname>
      <marks>95</marks>
   </student>
   <student rollno = "593">
      <firstname>Jasvir</firstname>
      <lastname>Wong</lastname>
      <nickname>Jazz</nickname>
      <marks>90</marks>
   </student>
</class>

檔案:students.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>第一個學生: </xsl:text>
            <xsl:value-of select = "/class/student/child::firstname" />    
         </body>
      </html>
   </xsl:template>
</xsl:stylesheet>

在瀏覽器中開啟上面檔案:student.xml ,驗證顯示效果如下 -