经常在工作中会使用到XPath的相关知识,但每次总会在一些关键的地方不记得或不太清楚,所以免不了每次总要查一些零碎的知识,感觉即很烦又浪费时间,所以对XPath归纳及总结一下。
在这篇文章中你将能学习到:
XPath简介
XPath 路径表达式详解
XPath在DOM,XSLT及XQuery中的应用
XPath简介
XPath是W3C的一个标准。它最主要的目的是为了在XML1.0或XML1.1文档节点树中定位节点所设计。目前有XPath1.0和XPath2.0两个版本。其中Xpath1.0是1999年成为W3C标准,而XPath2.0标准的确立是在2007年。W3C关于XPath的英文详细文档请见:http:///books/schema']
选择books下的所有的book节点,(节点名和命名空间都匹配)
//message[@id=0]//books/*[local-name()='book'][year>2006]
选择year节点值>2006的book节点
//message[@id=0]//books/*[local-name()='book'][1]/year>2006
指示第一个book节点的year节点值是否大于2006.
返回xs:boolean: true
函数及说明:
值得欣喜的是XPath函数和XSLT,XQuery等共享函数库,函数库为我们提供了功能丰富的各种函数的调用,我们也可以自定义自己的函数。这里不再对每个函数的用法逐一说明,中文的可以参考这个网站, https://www.jb51.net/w3school/xpath/index.htm
XPath在DOM,XSLT及XQuery中的应用
DOM:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><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>注意:
我们若使用new ActiveXObject("Microsoft.XMLDOM")则需要注意的是:因为早期的XMLDOM的SelectionLanguage属性默认是正则表达式,不是XPath语言。所以需要指定这样一条语句xmlDoc.setProperty("SelectionLanguage", "XPath"); 以支持XPath查询表达式。.
若没有指定SelectionLanguage属性值为XPath则要注意以下情况:
数组下标从0开始(我们知道在XPath查询表达式中数组下标是从1开始的)不支持在XPath查询表达式中使用XPath函数。
总结
以上就是本文关于Xpath语法格式总结的全部内容,希望对大家有所帮助。感兴趣的朋友可以参阅:MYSQL updatexml()函数报错注入解析、OGNL表达式基本语法与用法详解、前端常见跨域解决方案(全)等,有什么问题可以随时留言,欢迎大家讨论交流。