本篇包括Chapter 11 XPointers。
XPointer是通过在一般的url后面加#号来指定某个url里面的某些内容。它基于xpath,同时也对xpath进行的一些扩充,在数据类型上增加了point跟range两种类型,同时增加了遇这些类型相关的方法(除此之外还有一些与xpoi nter相关的特殊方法)。在xpath的基础上,它也提供了一些常用xpath的简化表达方式。
要点如下:
1.使用xpath的格式为xpointer(xpath expression),在此之上,xpointer可以由若干上述表达式构成,如果第一个表达式无法定为到任何内容,则采用第二个表达式,以此类推。如果xpointer里面用到的某些字符在url下是不合法的,则必须用UTF-8 encoding来escape。XPointer可以跟xlink混合使用,同时如果某个xpointer是指向当前文档,则可省略url,直接用#开头,例子如下:
http://www.cafeconleche.org/people.xml#xpointer(//name[position( )=1])
#xpointer(//first_name)xpointer(//last_name)xpointer(//middle_initial)
2.当要定位到含有ID类型的attribute的element时,可以直接在#后面加id值,当要选择root node下面的第n个子节点的第m个子节点(以此类推),可以使用/n/m/i/j/k的表达方式。例子如下:
<div1 id='sec-intro'>
http://www.w3.org/TR/1999/REC-xml-names-19990114/xml-names.xml#sec-intro
http://www.w3.org/TR/1999/REC-xml-names-19990114/xml-names.xml#/1/2/1
3.当要使用到namespace的时候,可以提前用xmlns(prefix=URI)来声明,当需要用到多个namespace的时候,可以用多个xmlns来声明,需要注意的是,xml文档中的namespace声明不会影响xpointer中的namespace声明,所以任何需要被xpointer用到的namespace都必须明确声明,我想这应该是为了保证xpointer的可移植性,就是在某份xml文档中的xpointer,只要被复制下来,放到任何地方都能指向同个地址。
4.XPointer中的point被定义如下,如果context node是只含有string,那么point就在string的前后以及每个character的中间,否则,point就在element的start tag之后,end tag之前,以及每个子node的中间。Range则由两个point构成,表示这两个point中间的内容,range所表示的内容不一定要是well formed。跟point相关的函数有start-point(),end-point()等,跟range相关的函数有range(),range-to(),range-inside(),string-range()。
5.XPointer中有一些特殊的函数,比如here()表示包含这个xpointer的node,origin()表示在历史纪录中含有打开当前文档的link的那个node。
分享到:
相关推荐
XML.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 ...
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共同撰写。...
《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是微软...
Java in a Nutshell(6th) 英文无水印pdf 第6版 pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除
C# 6.0 in a Nutshell(6th) 英文无水印pdf 第6版 pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系...