XPath運算式通常定義模式以便選擇一組節點。 這些模式由XSLT用於執行轉換,或者由XPointer
用於尋址。
XPath規範指定了七種類型的節點,這些節點可以是XPath運算式的執行輸出。
- 根
- 元素
- 文本
- 屬性
- 注釋
- 處理指令
- 命名空間
XPath使用路徑運算式從XML文檔中選擇節點或節點列表。
以下是從XML文檔中選擇節點/節點列表的路徑和運算式列表。
序號 | 運算式 | 描述 |
---|---|---|
1 | node-name |
選擇具有給定名稱nodename 的所有節點。 |
2 | / |
選擇從根節點開始。 |
3 | // |
選擇從與選擇匹配的當前節點開始。 |
4 | . |
選擇當前節點 |
5 | .. |
選擇當前節點的父節點 |
6 | @ |
選擇屬性 |
7 | student |
示例 - 選擇名為student 的所有節點 |
8 | class/student |
示例 - 選擇作為類的子項的所有student 元素 |
9 | //student |
選擇所有student 元素,無論它們在文檔中的什麼位置 |
示例
在這個例子中,創建了一個示例XML文檔students.xml及其樣式表文檔students.xsl,它使用各種XSL標記的select
屬性下的XPath運算式來獲取每個學生節點:rollno
,firstname
,lastname
,nickname
和marks
的值。
檔: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>
<h2>Students</h2>
<table border = "1">
<tr bgcolor = "#9acd32">
<th>Roll No</th>
<th>First Name</th>
<th>Last Name</th>
<th>Nick Name</th>
<th>Marks</th>
</tr>
<xsl:for-each select = "class/student">
<tr>
<td> <xsl:value-of select = "@rollno"/></td>
<td><xsl:value-of select = "firstname"/></td>
<td><xsl:value-of select = "lastname"/></td>
<td><xsl:value-of select = "nickname"/></td>
<td><xsl:value-of select = "marks"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
在流覽器中打開,驗證輸出結果 -