XPath表達式
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>
在瀏覽器中打開,驗證輸出結果 -