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

读XML in a Nutshell (8)

    博客分类:
  • XML
阅读更多

本篇包括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

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

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

    Python in a Nutshell- A Desktop Quick Reference-O'Reilly Media

    《Python in a Nutshell》是一本专为Python程序员设计的桌面速查指南,由Alex Martelli、Anna Ravenscroft和Steve Holden合著。本书是第四版,涵盖了Python 3.7到3.11的版本,旨在帮助读者快速查找Python语言和库的...

    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共同撰写。...

    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是微软...

    Java in a Nutshell(中文版)

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

Global site tag (gtag.js) - Google Analytics