XML中XPointer的概念

原创 2007年09月30日 08:35:00

        XPointer,即XML指针语言(XML Pointer Language),在2003325成为了W3C推荐使用的标准,用于显示XML文件中的特定位置及要素的规格。它可以通过URI引用XML文档的片段。XLink可以链接资源,通过把XPointerXLink联合使用,就可以链接资源的任意部分,而不是整个资源。XPointer可以链接到特定位置,甚至可以链接XML文档中的某个位置范围。它还可以使用字符串来匹配搜索XML文档。

    HTML中,有一个类似于XPointer的标识<A NAME=>,它的作用就是指明了可以链接到被<A>元素标识的位置,例如有一HTML文档link.html,如例9-18所示。

9-18

<html>

<body>

<a name="section1">section1<br></a>

<a name="section2">section2<br></a>

<a name="section3">section3<br></a>

</body>

</html>

    链接到该文档的HTML文档seclink.html如例9-19所示。

9-19

<html>

<body>

<a href="link.html#section1">section1 here<br></a>

<a href="link.html#section2">section2 here<br></a>

<a href="link.html#section3">section3 here<br></a>

</body>

</html>

 

   HTML

利用符号#指定了所要链接到的目标文档的锚点,浏览器便会定位显示出链接到目标文档的具体位置。读者可以在link.html文档的三个节中多添加些内容,以查看效果。但是使用HTML链接文档HTML锚点必须先声明,还有声明的锚点必须链接到整个文档,这是使用HTML链接的缺点。

    使用XMLXPointer便会解决这些问题。完整形式的XPointer的形式为xpointer(表达式),其中表达式用于定位计算,得到需要的资源片断,所有的定位计算都基于一个已知节点,该节点称为上下文节点。一般而言,最初始的上下文节点总是文档中的确定位置,如文档的根节点(注意:根节点不是根元素,它是一个抽象的节点,是根元素的父节点,用"/"表示)、文档中具有确定ID值的元素(用函数id()表示)、当前元素(用函数here()表示)等。无修饰名称只有一个名称,表示文件中ID等于指定名称的元素,它提供了与HTML文件兼容的方式以定位文档片段。子节点序列由名称、一系列数字和"/"组成的序列,其中"/"用于分隔名称和数字,数字n表示前面定位元素的第n个直接子元素,子节点序列必须以"/1"或名称打头,表示该序列从根元素或指定ID的元素开始。实际上,后面两种形式都是第一种形式的简写,下面是几种形式的XPointer的例子。

1  xpointer(/child::sec/descendent::section[position()=5])

2  xpointer(id("section")) 简写为:section

3  xpointer(/child::*[position()=1]/child::*[position()=2]) 简写为: /1/2

4  xpointer(id("loc")/child::*[position()=3]/child::*[position()=4]) 简写为:loc/3/4

    XPointer语言中的表达式是多个位置步形成的一个位置路径,每个位置步间用"/"分隔,前面位置步的运算结果构成后面位置步的上下文节点。位置步的形式为axis::node-test[prediates],它包括三个部分:

l         axis  关键字,有且仅有一个,它表示结果节点与上下文节点的关系;

l         node-test  节点测试,有且仅有一个,它表示结果节点的类型或名称;

l         prediates  谓词,零到多个,它可以是用于限制结果的任意表达式。

    xpointer表达式第一个例子中,第一个/表示文档的根节点,child::sec为第一个位置步,descendent::section[position()=5]为第二个位置步,这两个位置步链接形成一个位置路径。在第二个位置步中,"descendent"是关键字,"section"是节点测试,"position()=5"是谓词。该例子表示查找文档中sec子元素下的第1-5section元素。

    第二个例子表示查找idsection的元素,该例可以简写为section

    第三个例子中child::*[position()=1]为第一个位置步,*表示所有的子元素。child::*[position()=2]为第二个位置步。这个例子表示的是查找根元素的第1个子元素的第2个子元素。

    第四个例子表示查找idloc的元素的第3个子元素下的第4个子元素。

    通过XPointer的几个例子,读者可能已经了解XPointer的基本结构及含义了,下面将给出一个具体的示例来介绍XPointerXML文档中的基本用法。目标文档如例9-20所示。

9-20

<?xml version="1.0"?>

<图书馆>

 

<图书 书名="C#技术内幕" id="1101">

  <封面 url="http://www.itzcn.net/book/cover01.jpg" />

  <出版社>机械工业出版社</出版社>

  <简介>

这是一本C#编程语言的指南和参考书。C#是一种崭新的面向对象

的编程语言。它强调以组件为基础的软件开发方法。

  </简介>

</图书>

 

<图书 书名="时间简史" id="5105">

  <封面 url="http://www.itzcn.net/book/cover51.jpg" />

  <出版社>湖南科学技术出版社</出版社>

  <简介>

《时间简史》以最通俗的语言,对一些最古老的问题做了阐述,

    向人们介绍了什么是宇宙论,以及宇宙论最新的发展状况。

  </简介>

</图书>

 <, /o:p>

</图书馆>

    目标文档中定义了图书馆的两本图书,两本图书都有各自的id标识。链接文档如例9-21所示。

9-21

<?xml version="1.0"?>

<图书借阅 xmlns:xlink="http://www.w3.org/1999/xlink">

 

<图书 xlink:type="simple"

  xlink:href="http://www.itzcn.net/book/9-20.xml#xpointer(id('1101'))">

  <描述 xlink:type="simple"

  xlink:href="http://www.itzcn.net/book/cover01.jpg">

  学习C#的书籍

  </描述>

</图书>

 

<图书 xlink:type="simple"

  xlink:href="http://www.itzcn.net/book/9-21.xml#xpointer(id('5105'))">

  <描述 xlink:type="simple"

  xlink:href="http://www.itzcn.net/book/cover51.jpg">

  科技图书

  </描述>

</图书>

 

</图书借阅>

    链接文档描述了图书借阅的情况。链接类型为简单链接。例9-22第一个图书元素声明中

xlink:href="http://www.itzcn.net/book/9-20.xml#xpointer(id('1101'))">

    通过属性xlink:href指定的目标文档9-20.xml使用XPointer链接到目标文档id1101的元素,从而显示该元素所包含的信息。这一句可以简写为:

xlink:href="http://www.itzcn.net/book/9-21.xml#1101">

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

XML DOM解析 基础概念

DOM和SAX   W3C制定了一套书写XML分析器的标准接口规范——DOM。   除此以外,XML_DEV邮件列表中的成员根据应用的需求也自发地定义了一套对XML文档进行操作的接口规范—...

XML基本概念特点和优势

  • 2011-04-02 14:22
  • 1.98MB
  • 下载

XML的相关概念

XML 可扩展标记语言(英语:eXtensible Markup Language,简称:XML),是一种标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章...

XLlink和XPointer实验

  • 2012-12-20 22:07
  • 226KB
  • 下载

XLink 和 XPointer 教程

  • 2013-01-31 12:30
  • 7.50MB
  • 下载

Java里的XML概念整理

1. XML语法解析方式   XML解析方法是理论知识,不止在java里是这样,换到其他语言下也是一样的。目前有三种:      A.  DOM(Document Object Model): ...

XPath and Xpointer

  • 2008-11-14 23:30
  • 2.70MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)