`
semi_sleep
  • 浏览: 101122 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

读XML in a Nutshell (6)

    博客分类:
  • XML
XML 
阅读更多

本篇关于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

    XML.in.a.Nutshell(英文版)

    C# 6.0 in a Nutshell(6th) 无水印pdf

    C# 6.0 in a Nutshell(6th) 英文无水印pdf 第6版 pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系...

    C# 5.0 in a Nutshell

    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 ...

    C# 7.0 in A Nutshell

    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 in a Nutshell #### 引言:理解USB标准 对于初学者而言,进入USB领域可能会感到非常棘手。USB 2.0规范长达650页,仅仅这一点就足以让人望而却步。而这仅仅是众多与USB相关的标准中的一个开始。除了主规格...

    python in a nutshell 2nd,中文版

    《Python in a Nutshell》第二版是一本针对Python编程语言的深度指南,旨在为程序员提供一个全面而紧凑的参考资源。这本书中文版的高清扫描版是学习和查阅Python技术的重要资料,尤其适合已经有一定编程基础并希望...

    Delphi in a Nutshell

    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 in a Nutshell #### 知识点一:R 的获取与安装 - **R 版本**:本书提及了 R 的版本信息,对于学习者来说了解当前使用的 R 版本至关重要,因为不同的版本可能会有功能上的差异或兼容性问题。 - **获取与安装 ...

    C#6.0 IN A NUTSHELL

    《C#6.0 IN A NUTSHELL》是由Joseph Albahari和Ben Albahari合著的一本关于C#编程语言的参考书籍。这本书是“C# in a nutshell”系列书籍的最新版,专门针对C# 6.0版本提供了详尽的参考资料和指导。该书不仅仅是一本...

    Python in a Nutshell Third Edition 2017

    ### Python in a Nutshell 第三版 2017 关键知识点解析 #### 书籍概述 《Python in a Nutshell》第三版是一本全面而深入介绍Python编程语言的经典著作,由Alex Martelli、Anna Ravenscroft和Steve Holden共同撰写。...

    Java in a Nutshell(中文版)

    Java in a Nutshell(6th) 英文无水印pdf 第6版 pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    C# 5.0 in a Nutshell 5th

    《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 in a Nutshell, 5th Edition》是一本全面介绍C# 5.0编程语言的经典著作。这本书由权威专家编写,深入浅出地讲解了C# 5.0的关键特性,旨在帮助开发者快速掌握并熟练应用这一强大的编程工具。 C# 5.0是微软...

Global site tag (gtag.js) - Google Analytics