函數(shù)及說明:
值得欣喜的是XPath函數(shù)和XSLT,XQuery等共享函數(shù)庫,函數(shù)庫為我們提供了功能豐富的各種函數(shù)的調(diào)用,我們也可以自定義自己的函數(shù)。這里不再對每個函數(shù)的用法逐一說明,英文好點(diǎn)的朋友直接去看看w3關(guān)于XPath函數(shù)的介紹吧:http://www.w3.org/TR/xquery-operators 。中文的可以參考這個網(wǎng)站, http://www.w3school.com.cn/xpath/xpath_functions.asp
XPath在DOM,XSLT及XQuery中的應(yīng)用
DOM:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<html xmlns="<head> <title>XPath Test</title> </head> <body>
<script language="javascript" type="text/javascript"> var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.load("messages.xml"); xmlDoc.setProperty("SelectionLanguage", "XPath"); var sPath = "/messages/message[1]//books/*[local-name()='book']"; var bookNodes = xmlDoc.selectNodes(sPath);
document.write("<ul>"); for ( var i = 0; i < bookNodes.length; i++) { document.write("<li>" + bookNodes[i].childNodes[0].text + "</li>"); } document.write("</ul>"); </script>
</body> </html>
注意:
我們?nèi)羰褂胣ew ActiveXObject("Microsoft.XMLDOM")則需要注意的是:因?yàn)樵缙诘腦MLDOM的SelectionLanguage屬性默認(rèn)是正則表達(dá)式,不是XPath語言。所以需要指定這樣一條語句xmlDoc.setProperty("SelectionLanguage", "XPath"); 以支持XPath查詢表達(dá)式。.
若沒有指定SelectionLanguage屬性值為XPath則要注意以下情況:
- 數(shù)組下標(biāo)從0開始(我們知道在XPath查詢表達(dá)式中數(shù)組下標(biāo)是從1開始的)
- 不支持在XPath查詢表達(dá)式中使用XPath函數(shù)。
XSLT: 見:我的另外一篇關(guān)于如何使用XSLT的一個小示范http://www.cnblogs.com/ktgu/archive/2008/12/14/1354890.html
XQuery: XQuery查詢表達(dá)式:
xquery version "1.0";
<ul> { let $i := 0 for $x in doc("C:\Users\Administrator\Desktop\messages.xml")//message[@id=0]//books/*[local-name()='book'] where $x/year>2006 order by $x/year descending return <li>{ data($x/name) } </li> } </ul>
返回結(jié)果:
<ul> <li>Microsoft Visual C# 2008 Step by Step </li> <li>Professional C# 2008 </li> </ul>
這里只是非常簡單的介紹一下應(yīng)用,XPath的其他應(yīng)用場合和應(yīng)用技巧大家自己總結(jié)吧,若有好的體驗(yàn),覺得很爽的話,別忘了告訴哥們一下啊,大家共同提高。
原文:http://www.cnblogs.com/ktgu/archive/2009/04/16/1353246.html
本文鏈接:http://m.95time.cn/tech/program/2009/6635.asp
出處:亂碼
責(zé)任編輯:bluehearts
上一頁 XPath詳解,總結(jié) [3] 下一頁
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|