XPath的語法
我們在前面已經提到過XPath是用來幫助XSLT在XML源文檔中查找定位信息的語言在實際使用過程中XPath和XSLT總是混在一起使用在上面一章的語法例子中我們已經有使用到XPath的語法只是沒有明確點出但WC將它們分成兩個標准所以我們也將它們拆成兩章來講解
XPath的語法
當前位置
尋址操作
運算符
功能函數
當前位置
當我們使用XSLT處理XML源文檔是我們用Context來表示當前正在被模板處理的節點位置比如xsl:template match=/語句中表示Context在文檔的根(root)節點我不知道如何准確的翻譯Context這個詞它類似於C語言裡的指針表示程序當前運行的位置理解Context對於正確處理XSL模板非常重要當您的XSL模板輸出的文檔和您想要的不一樣最先應該分析的就是Context在哪裡
Location Paths是用於設定你想要尋找的Context節點位置就類似DOS的目錄命令我們看個例子
<xsl:foreach select=child::PEOPLE/descendant::PERSON>
其中child::PEOPLE/descendant::PERSON就是XPath語法這個表達式就是一個Location Paths代碼說明要顯示所有PEOPLE元素的子元素和所有PERSON元素的子元素通常我們會采用更簡單的寫法
<xsl:foreach select=PEOPLE//PERSON>
我們來解釋path的兩種表示方法/和//
/是表示當前文檔的節點類似DOS目錄分割符例如/PEOPLE表示選擇根節點下的PEOPLE元素PEOPLE/PERSON表示選擇PEOPLE元素下所有的PESON子元素
//則表示當前文檔所有的節點類似查看整個目錄例如//PEOPLE表示選擇文檔中所有的PEOPLE元素無論它在什麼層次PEOPLE//PERSON表示在PEOPLE元素下所有的PERSON元素無論它的層次多深
尋址操作
Axis和Predicate是XPath語法中對Location Paths進行定位操作的語法具體的用法列表如下
Axis語法表
表達式 簡寫 說明
self 選擇當前的節點
例子 :
<TD><xsl:valueof select=/></TD>
代碼表示在當前位置插入當前的節點包含的文本(text)值
parent 選擇當前節點的父節點
attribute @ 選擇一個元素的所有屬性
例子:
<TD><xsl:valueof select=@PERSONID/></TD>
選擇PERSON元素的所有屬性
child 選擇當前節點的所有子元素
ancestor 選擇當前節點的所有父元素(包括父元素的父元素類推)
Axis幫助我們選擇當前節點周圍所有的節點而Predicate則用來定位當前節點內部的元素表示方法為方括號[]中加表達式[ Expression ]具體舉例如下:
PERSON[position()=]
這句代碼表示尋找第二個PERSON 元素
PERSON[startswith(name B)]
這句代碼表示尋找所有名稱以B開頭的PERSON元素
運算符
這一節介紹XPath的運算符(Expressions)列表如下
運算符 說明
and or 就是普通意義的and or
= 等於
!= 不等於
> >= 大於大於等於
< <= 小於小於等於注意在XSL文件中<符號要用< 表示
* div 加減乘除
mod 取模
| 兩個節點一起計算
功能函數(Functions)
在XPath裡有很多功能函數可以幫助我們精確尋找需要的節點
count()功能
作用統計計數返回符合條件的節點的個數
舉例<p><xsl:valueof select=count(PERSON[name=tom])/></p>
說明代碼的用途是顯示PERSON元素中姓名屬性值為tom有幾個
number()功能
作用將屬性的值中的文本轉換為數值
舉例<p>The number is: <xsl:valueof select=number(book/price)/></p>
說明代碼的用途是顯示書的價格
substring() 功能
語法substring(value start length)
作用截取字符串
舉例<p><xsl:valueof select=substring(name )/></p>
說明代碼的用途是截取name元素的值從第一個字母開始顯示到第三個
sum()功能
作用求和
舉例<p>Total Price = <xsl:valueof select=sum(//price)/></p>
說明代碼的用途是計算所有價格的和
上面這些功能只是XPath語法中的一部分還有大量的功能函數沒有介紹而且目前XPath的語法仍然在不斷發展中通過這些函數我們可以實現更加復雜的查詢和操作
看到這裡我們的入門教程就快結束了通過走馬觀花式的快速學習希望大家對XSLT應該有了一點基本概念XSLT是一種轉換XML文檔的語言它包含兩個過程轉換和格式化XSLT的功能比CSS強大得多它有類似數據查詢的語法如果您對XSLT感興趣那麼以上的知識是遠遠不夠的需要查詢更多的資料阿捷在最後一章附錄為大家提供了主要的XSLT資源
From:http://tw.wingwit.com/Article/program/ASP/201311/21862.html