XPath序列之一

2016-01-29 12:32 5 1 收藏

XPath序列之一,XPath序列之一

【 tulaoshi.com - ASP.NET 】

前段时间因为学习的需要,整理了一下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------------------------------

来源:http://www.tulaoshi.com/n/20160129/1486487.html

延伸阅读
作为组件制作的开始,应该了解一些概念,我以为这些概念是非常重要的,将可以作为以后实践的理论基础。 ? 一,?组件的简要层次结构。一般情况下,VCL的组件可以从Tcomponent为开始。其最明显的特征就是它的属性可以在设计时通过对象察看器来操纵,另外,他还能拥有其他组件。 从Tcomponent下,分出非可视组件和可视...
标签: Java JAVA基础
JSP和SERVLET到底在应用上有什么区别,很多人搞不清楚。我来胡扯几句吧。简单的说,SUN首先发展出SERVLET,其功能比较强劲,体系设计也很先进,只是,它输出HTML语句还是采用了老的CGI方式,是一句一句输出,所以,编写和修改HTML非常不方便。 后来SUN推出了类似于ASP的镶嵌型的JSP,把JSP TAG镶嵌到HTML语句中,这样,就大大简化和方便了网...
标签: Web开发
在Intel的早期,Andy Grove遇到一个雇员 - 他 建议公司在芯片的基础上开发个人计算机。Andy Grove疑问道“个人计算机能做什么呢?”,这个 雇员举例说,它可以存储处方。Grove考虑到整个 研究、开发和市场费用要数百万美圆,最终决定 以为红绿灯提供芯片作为开始。 每个人都是事后诸葛亮。Andy Grove,不管你怎样...
本文的开发环境是:JBuilder4+IAS41+Vbj411基本设置 一、前言 首先说明,我对JB4(JBuilder4),IAS41(Inprise Application Server)和Vbj411(VisiBroker For Java)不熟悉,只是自己看了些英文文档配置和测试了一下,成功了,就将这个写出来,也许对大家有点用处。 二、下载,安装 下载地址为Inprise官方站...
认识代理服务器 ! 一、什么是代理服务器? 代理服务器是介于浏览器和Web服务器之间的一台服务器,当你通过代理服务器上网浏览时,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。而且,大部分代理服务器都具有缓冲的功能,它不断将新取得数据储存到它本机的存储...

经验教程

951

收藏

53
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部