XPath序列之三

2016-01-29 12:31 8 1 收藏

XPath序列之三,XPath序列之三

【 tulaoshi.com - ASP.NET 】

3 定位路径与路径步XPath的主要构件是表达式,其中,最重要的表达式是定位路径(Location Path)表达式,这也是它为什么命名为XPath的原因。定位路径表达式是这种类型的表达式:/pub/book/author粗看起来,定位路径表达式很像文件系统中的路径。定位路径的思想和文件系统中的路径却是很相似,当然,更复杂一些。定位路径有两种,分别是相对的定位路径和绝对的定位路径。每种定位步都是由一个或多个定位步组成,每个定位步之间用正斜杠( / )分开。绝对路径以正斜杠( / )开始,而相对路径则没有。XPath中用上下文节点集合上下文节点来描述定位路径的求值过程是如何进行的。上下文节点集定义为:表达式中给定点确定的当前节点集;而上下文则定义为:正在处理的当前节点。定位步按照顺序从左到右一次一个地求值。每一个定位步都是相对于上下文节点集中的节点进行求值的,如果定位路径是绝对的,则初始的上下文节点集中包含根节点,否则,它包含当前上下文节点(即依赖于表达式使用的位置)。第一个定位步把上下文节点集中的每个节点当作上下文节点进行求值,然后结果节点集被合并为新的节点集,这个节点集成为下一步操作的上下文节点集,这样的处理在定位路径的每一个定位步中持续进行,最后的定位步产生的节点集就是这个表达式的结果。一个定位路径由若干个定位步组成,而一个定位步有三个部分:·????? 一个轴,它指定了定位步选择的节点与上下文节点之间树状关系,·????? 一个节点测试,它指定定位步选择的节点的节点类型以及节点扩展名扩展名,和·????? 零个或零个以上的判定词,它使用专有的表达式进一步细化定位步选择的节点集合。定位步的句法是由两个冒号分开的轴名和节点测试组成,其后可跟随零个或零个以上在方括符内的表达式。例如,在child::para[position()=1] 中,child是轴名,para是节点测试而 [position()=1]则是判定词。整个定位步选择的求值是先从轴和节点测试产生初始的节点集合,然后再由各个判定词的依次过滤,得到作为结果的节点集合。初始的节点集合的节点组成、这些节点与上下文节点关系由轴指定的,其节点类型及扩展名由节点测试指定。例如,定位步descendant::para选择上下文节点的para元素后裔:descendant指定在初始的节点集合中的每一个节点都必须是该上下文的一个后裔节点;para 指定在初始的节点集合中的每一个节点都必须是para元素。初始的节点集合由第一个判定词过滤后产生一个新的节点集合,新的节点集合再由第二个判定词进行过滤,如此一直下去。最后的节点集合是由定位步选择的节点集合。以下是可用到的轴:·???? child 轴包含上下文节点的孩子;·???? descendant 轴包含上下文节点的后裔;后裔是一个孩子或一个孩子的一个孩子,等等,这样,后裔轴从来不包含属性或命名空间节点;·???? parent 轴包含上下文节点的父节点,如果有的话;·???? ancestor 轴包含上下文节点的祖先;上下文节点的祖先由上下文节点的父节点以及父节点的父节点等等组成;这样,祖先轴将总是包括根节点,除非上下文节点是根节点;·???? following-sibling 轴包含上下文节点的所有在其后的兄弟,如果上下文节点是属性节点或命名空间节点,following-sibling 轴则为空;·???? preceding-sibling 轴包含上下文节点的所有在其前的兄弟,如果上下文节点是属性节点或命名空间节点,preceding-sibling 轴则为空;·???? following 轴包含在上下文节点所在的同一文档中,所有依照文档顺序在上下文节点后的节点,但排除所有的后裔,也排除属性节点以及命名空间节点;·???? preceding 轴包含在上下文节点所在的同一文档中,所有依照文档顺序在上下文节点前的节点,但排除所有的后裔,也排除属性节点以及命名空间节点;·???? attribute 轴包含上下文节点的属性,除非上下文节点是元素,该轴将为空;·???? namespace 轴包含上下文节点的命名空间节点,除非上下文节点是元素,该轴将为空;·???? self 轴只是包含上下文节点自己;·???? descendant-or-self 轴包含上下文节点和上下文节点的后裔;·???? ancestor-or-self 轴包含上下文节点和上下文节点的祖先;这样,该轴将总是包括根节点;ancestor,descendant,following,preceding 以及 self 轴划分了一个文档(忽略属性和命名空间节点):他们相互不重叠,而且他们组在一起则包含了文档所有的节点。每个轴有一个方向。轴的方向可以使向前(forward)的或者反向(reverse)的,向前的轴以文档顺序在节点间移动,而反向的轴则以反文档顺序在节点间移动。在这些轴里,child、descendant、descendant-or-self、following、following-sibling属于向前轴,而parent、ancestor、ancestor-or-self、preceding和preceding-sibling属于反向轴,其它的轴的方向不可用。每个轴都有一个基本节点类型。如果轴能包含元素,基本的节点类型则是元素;否则,它的类型是轴能包含的节点的类型。因此,对于属性轴

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

延伸阅读
标签: ASP
  构造代理库 .NET 平台上的应用程序可以使用代理库来调用Web服务上的方法,这样使用Web服务就非常容易。生成代理库的第一步是从SDL中生成一个Web服务的代理类。.NET SDK提供了一个叫做WebServiceUtil.exe的工具,它能够帮助我们生成一个代理类。要生成Web服务的代理类,首先进入命令行环境,然后转到将要开发客户应用程序的那个目录...
VCL中的Shape是个很不错的控件,可以选择几种图形,以满足我们的需求,但有时候就是觉得它的可选图形少了一点,比如我们想要一个三角形,它却没有。于是就想到来扩展一下这个控件,名为ShapeEx。其实扩展的功能不多,只是增加了一些图形。而类也并不是继承自TShape,而是继承自TGraphicControl,这样可以让我们彻底看看图形控件的做法。Tshape也...
标签: CorelDRAW
(镜框) 看到这个小节的小标题了吧?镜框!不是艺术镜框!我是一直不太喜欢提“艺术”这个词的,所以没有在镜框前面加上这两个字,因为我觉得是否“艺术”并不重要,它并不是这里讨论的主题,这里只告诉你这种东西怎么做,至于能否具有“艺术性”,我不能也不敢给你打包票,只能靠你自己的修为了。 按老规矩,这一小节有两种...
标签: PS PS教程
本文由中国专家hf-2048原创,转载须保留此信息 之前已经发过两篇,但之前的两篇主要讲的是偏色照片的调正及美化. 今天要讲的是对数码照片进行润色和对人物的细节进行调整. 调色练习教程之一: http://bbs.jcwcn.com/viewthread.php?tid=24483&extra=page%3D1 调色练习教程之二: http://bbs.jcwcn.com/viewthread.php?tid=24828&ext...
标签: Web开发
XML的未来 现在你已经知道XML。确实,结构有点复杂,而且DTD有各种可 以定义文档可以包含的内容的选项。但还不只这些。 考虑一个数据交换对其很重要的产业,如银行。银行使用所有 权系统来跟踪内部的交易,但是如果他们在Web上使用一种通用 的XML格式,那么他们必须描述交易信息给另一个机构或应用程 序(如Quic...

经验教程

594

收藏

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