本篇关于Chapter 9 XPath。
跟其他的语言一样,xpath expression由变量和操作构成。在变量的类型上,有Boolean,String,Number跟xpath独有的Node Set,需要注意的是,xpath是弱类型的语言,它会自动做类型转换,唯一例外的是Node Set不能由另外三种类型转换得到。在操作方面,xpath的操作是基于context(照我的理解,context包括current node set还有current node)的,也就是说由context跟input来决定output。其中操作包括运算符(+ - * DIV MOD = > < != ...),方法,还有location path,所有的操作都有返回值(也就意味着没有所谓void的方法)。location path是xpath特有的操作方式,它以Node Set作为返回值,它由若干的"location step + /"组成,每个location step由axis(可被简化) + node test + predicate(可省略,predicate是一个Boolean值)组成。
以下是要点:
1.Xpath处理的是xml中的root node,element nodes,text nodes,attribute nodes,comment nodes,processing-instruction nodes,namespace nodes。而像CDATA,entity reference,dtd这种xpath是不管的。对于xpath来说root node指的不是document element,而是包括document element,顶层comment,processing-instruction等等的整个文档。同时,像xmlns,xmlns:prefix这种不被作为attribute看待,而是被认为是attribute nodes。
2.Location step中,/开始表示从root node开始,是绝对地址,其他的为相对地址。使用“//”选择context node以下的所有节点,同时包括context node,使用“..”选择父节点,使用“.”选择context node。
3.Node test中,采用xxx(prefix:xxx)选择某个名称的element,采用*选择所有的element,采用@xxx(@prefix:xxx)选择某个名称的attribute,采用@*选择所有的attribute,采用comment(),text(),procession-instruction()(可以用input参数来选择某个target的processing instruction)分别选择相应的node,采用node()选择所有的node。通过使用“|”号可以以或的关系把若干node test组合起来构成新的node test。
4.在axis方面,axis可以被省略,这种情况下默认是往子节点方向,如果不被省略,格式为axis::node test。Axis的类型包括ancestor,following-sibling,following,preceding,namespace,descendant,ancestor-or-self。
5.Predicate被“[”“]”这两个符号围住,其中的expression会在每个context node下evaluate一次,如果最终结果是true或者可以被转化成true,则context node将被包含在返回值中。
6.关于不同的类型间的转换机制,还有常用的funcion,可以去查相关的reference。
分享到:
相关推荐
XML.in.a.Nutshell(英文版)
C# 6.0 in a Nutshell(6th) 英文无水印pdf 第6版 pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系...
When you have a question about how to use C# 5.0 or the .NET CLR, this highly acclaimed bestseller has precisely the answers you need. Uniquely organized around concepts and use cases, this fifth ...
Dive in and discover why this Nutshell guide is considered the definitive reference on C#. Get up to speed on the C# language, from the basics of syntax and variables to advanced topics such as ...
### USB in a Nutshell #### 引言:理解USB标准 对于初学者而言,进入USB领域可能会感到非常棘手。USB 2.0规范长达650页,仅仅这一点就足以让人望而却步。而这仅仅是众多与USB相关的标准中的一个开始。除了主规格...
《Python in a Nutshell》第二版是一本针对Python编程语言的深度指南,旨在为程序员提供一个全面而紧凑的参考资源。这本书中文版的高清扫描版是学习和查阅Python技术的重要资料,尤其适合已经有一定编程基础并希望...
Delphi in a Nutshell is the first concise reference to Borland/Inprise Delphi available. It succinctly collects all the information you need in one easy-to-use, complete, and accurate volume that goes...
### R in a Nutshell #### 知识点一:R 的获取与安装 - **R 版本**:本书提及了 R 的版本信息,对于学习者来说了解当前使用的 R 版本至关重要,因为不同的版本可能会有功能上的差异或兼容性问题。 - **获取与安装 ...
《C#6.0 IN A NUTSHELL》是由Joseph Albahari和Ben Albahari合著的一本关于C#编程语言的参考书籍。这本书是“C# in a nutshell”系列书籍的最新版,专门针对C# 6.0版本提供了详尽的参考资料和指导。该书不仅仅是一本...
### Python in a Nutshell 第三版 2017 关键知识点解析 #### 书籍概述 《Python in a Nutshell》第三版是一本全面而深入介绍Python编程语言的经典著作,由Alex Martelli、Anna Ravenscroft和Steve Holden共同撰写。...
Java in a Nutshell(6th) 英文无水印pdf 第6版 pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除
《C# 5.0 in a Nutshell 5th》是C#编程语言的一本权威指南,由专家撰写,深入浅出地介绍了C# 5.0版本的关键特性和使用方法。这本书对于开发者来说,是一份宝贵的参考资料,帮助他们理解和掌握C# 5.0的精髓,提升开发...
《C# 5.0 in a Nutshell, 5th Edition》是一本全面介绍C# 5.0编程语言的经典著作。这本书由权威专家编写,深入浅出地讲解了C# 5.0的关键特性,旨在帮助开发者快速掌握并熟练应用这一强大的编程工具。 C# 5.0是微软...