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 ,驗證顯示效果如下 -

XPath軸線