前段时间因为学习的需要,整理了一下XPath和XQuery的基本资料,在查资料的过程中,觉得很痛苦,因为大陆这方面的资料实在太少了,用过之后就想放着也是放着,不如挂到网上吧。个人希望以后多挂一些这方面的资料。如果有时间,我会把XQuery的规范翻译过来——只是为了自己方便使用而已。
XPath查询语言
1. XPath简介
XPath也是由W3C创建的。在W3C的规范里,对XPath 1.0的描述是这样的:
“XPath 1.0是致力于为XSLT和XPointer的公共功能提供一种共同的语法和语义的结果。XPath的主要目的是对一个XML文档进行寻址。为了支持这个主要目的,它也为操纵字符串、数值和布尔值提供了一些基本的功能。XPath使用一种紧凑的、非XML的语法以方便URI和XML属性值里的XPath的使用。XPath在XML文档的一个抽象、逻辑结构上进行操作,而不是在它的表面上的语法上。XPath因为使用类似于URL的路径表示法来在一个XML文档的层次结构中进行导航而得名。”
“除了用来寻址外,XPath也被设计为包含一个能够用于匹配(测试一个节点是否与一个样式匹配)的自然子集,XPath的这种用法定义在XSLT的规范中。”
说到XPath,就要从XSLT说起。一直以来,人们就要求将数据的内容和数据的表示分离,达到这个目的的途径是使用一般的标记语言来格式化和使用数据。在这方面,W3C最开始设计了DSSSL(Document Style Semantics and Specification Language)规范,DSSSL原本是设计为与SGML协同工作的,然而,可惜的是SGML并没有流行起来。
XML流行起来以后,W3C创造了XSL(Extensible Stylesheet Language)来让用户格式化XML,但是,XSL本身太过复杂,这大大限制了它的用途,现在的那些大软件公司如微软使用CSS来格式化XML。
但是,XSL中有一个部分却很有用,那就是XSLT(Extensible Stylesheet Language Transformations),XSLT能够让用户很容易的访问XML文档中的数据,并且将其转换为另一种格式的文档,比如HTML格式的文档。因为能够用XSLT将XML文档转换为其他不同结构或包含额外数据的XML文档,你能够将XML转换为普通文本文件或者RTF文件甚至JavaScript文件,事实上,可以转换为任何你想要格式的文档。
在这里,XSLT表现出了它的强大威力,它能够处理XML数据而不用借助复杂的编程。你只需要创建一个XSLT处理器并且把剩下的事情交给这个处理器。因为这个原因,XSLT成功了,并且最终与XSL规范脱离开来。而当W3C开始创建XSLT 1.0时,他们马上意识到,让人们使用简单的路径表达式来访问XML文档中的数据是一个很好的主意,于是,XPath 1.0就这样诞生了。
XPath 1.0是XSLT 1.0的核心,事实上,这两个规范在同一天(1999年11月6日)成为W3C的推荐标准。XPath 1.0之所以能够脱离XSLT 1.0而单独成为一个规范是因为W3C意识到许多其它的XML规范也需要对文档的各个部分进行寻址访问。
作为一个独立的规范,XPath 1.0能够被许多XML相关的规范使用,如今,XPath已经是很多XML相关规范的核心了,比如XPointer,它让你选择并引用XML文档的片断,以及XQuery。
XPath的最新版本是XPath 2.0,它还是一个工作草案,W3C里的规范有3种主要的层次:
工作草案(Working drafts):表示规范仍然在开发当中,并且仍可能进行修订
候选推荐标准(Candidate recommendations):规范成为正式推荐标准之间的那个阶段
推荐标准(Recommendations):规范的最终阶段,表示规范已经稳定下来
XPath 1.0是一个推荐标准,而XPath 2.0到目前为止仍然是一个工作草案。这说明新的版本比以前的版本有很大不同,而且以后还可能会有更大不同。
--------------------------------to be continued------------------------------