XPath详解,总结

作者:ktgu 来源:乱码 时间:2009-04-17 14:09:00 

经常在工作中会使用到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://www.w3.org/TR/xpath20/

XPath是一种表达式语言,它的返回值可能是节点,节点集合,原子值,以及节点和原子值的混合等。XPath2.0是XPath1.0的超集。它是对XPath1.0的扩展,它可以支持更加丰富的数据类型,并且XPath2.0保持了对XPath1.0的相对很好的向后兼容性,几乎所有的XPath2.0的返回结果都可以和XPath1.0保持一样。另外XPath2.0也是XSLT2.0和XQuery1.0的用于查询定位节点的主表达式语言。XQuery1.0是对XPath2.0的扩展。关于在XSLT和XQuery中使用XPath表达式定位节点的知识在后面的实例中会有所介绍。

在学习XPath之前你应该对XML的节点,元素,属性,原子值(文本),处理指令,注释,根节点(文档节点),命名空间以及对节点间的关系如:父(Parent),子(Children),兄弟(Sibling),先辈(Ancestor),后代(Descendant)等概念有所了解。这里不在说明。

XPath路径表达式

在本小节下面的内容中你将可以学习到:

  • 路径表达式语法

  • 相对/绝对路径

  • 表达式上下文

  • 谓词(筛选表达式)及轴的概念

  • 运算符及特殊字符

  • 常用表达式实例

  • 函数及说明

这里给出一个实例Xml文件。下面的说明及实例都是基于该XML文件。

路径表达式语法: 

  1. 路径 = 相对路径 | 绝对路径

  2. XPath路径表达式 = 步进表达式 | 相对路径 "/"步进表达式。

  3. 步进表达式=轴 节点测试 谓词

说明:

  1. 其中轴表示步进表达式选择的节点和当前上下文节点间的树状关系(层次关系),节点测试指定步进表达式选择的节点名称扩展名,谓词即相当于过滤表达式以进一步过滤细化节点集。

  2. 谓词可以是0个或多个。多个多个谓词用逻辑操作符and, or连接。取逻辑非用not()函数。

请看一个典型的XPath查询表达式:/messages/message//child::node()[@id=0],其中/messages/message是路径(绝对路径以"/"开始),child::是轴表示在子节点下选择,node()是节点测试表示选择所有的节点。[@id=0]是谓词,表示选择所有有属性id并且值为0的节点。

标签:xpath,路径,标准,xml
0
投稿

猜你喜欢

  • 设计师和美工

    2008-10-27 13:43:00
  • Request.ServerVariables("HTTP_REFERER")的用法

    2008-06-19 13:33:00
  • 是在客户端确认还是在服务器端确认?

    2010-07-14 21:05:00
  • IE8的一些CSS hack

    2008-03-17 13:08:00
  • SQL 中主标识列IDENTITY使用技巧

    2011-06-02 08:47:00
  • 利用windows任务计划实现oracle的定期备份

    2009-08-31 12:24:00
  • ASP自动清除ACCESS数据库的日文字符

    2007-11-28 17:40:00
  • 社会化音乐:在夹缝中生出花来

    2009-08-24 12:37:00
  • Dreamweaver的CSS布局ul和li范例

    2009-08-28 12:34:00
  • ASP 多关键词查询实例代码

    2011-04-11 11:14:00
  • 14个出色的jQuery导航菜单实例教程

    2009-12-31 17:23:00
  • 有效防止ASP木马上传运行—小知识[网络安全技术]

    2011-03-06 11:15:00
  • Oracle PL/SQL语言入门基础

    2010-07-20 13:28:00
  • JavaScript在ASP页面中实现掩码文本框效果代码

    2013-06-01 19:57:23
  • 什么是响应式Web设计?怎样进行?

    2011-11-21 17:00:40
  • asp 延时 页面延迟的三种方法

    2011-03-31 11:04:00
  • 怎么样才能让层显示在FLASH之上呢

    2008-03-05 13:32:00
  • css中如何使div居中(垂直水平居中)

    2007-08-13 08:17:00
  • 长文章自动分页asp实例-支持HTML

    2007-10-10 21:29:00
  • plsql和tsql常用函数比对

    2009-09-13 17:50:00
  • asp之家 网络编程 m.aspxhome.com