XML学习笔记(下)
6.3. XLink
XLink是一种基于属性的语法,用来在XML文档中添加链接。XLink链接可以是单向的,如HTML中的A元素,它也可以是双向的,在两个方向上链接两篇文档,因此能够从A到B或从B到A。每个XLink元素必须具有一个xlink:type属性,指出连接类型。属性xlink:href指向所链接的资源URI。下面是一个简单链接的示例:
<test xmlns:xlink = "http://www.w3.org/1999/xlink"
xlink:type = "simple"
xlink:href = "http://www.ringkee.com/xml.html">
<author>Jims</author>
<date>2005/02/18</date>
</test>
xlink:type属性类型共有六种,分别是:simple,extended,locator,arc,title,resource。
xlink:show属性可告诉浏览器或应用程序在激活链接时应该做什么,它有五种可能的动作,分别是:
new,在新窗口中显示链接内容。
replace,在当前窗口显示链接内容。
embed,在当前链接元素的位置嵌入内容。
other,动作不确定,由应用程序指定。
none,无动作。
xlink:actuate属性可告诉浏览器何时显示链接,它有四种可能值:
onLoad,一旦发现链接,马上显示。
onRequest,当用户提出请求时才显示。
other,由文档中的其它标记,而不是xlink,来决定何时显示。
none,不指定。
一个和HTML中的A元素作用一样的示例:
<test xmlns:xlink = "http://www.w3.org/1999/xlink"
xlink:type = "simple"
xlink:href = "http://www.ringkee.com/xml.html"
xlink:actuate = "onRequest"
xlink:show = "replace" >
<author>Jims</author>
<date>2005/02/18</date>
</test>
一个在页面嵌入图像的示例:
<image xlink:type = "simple"
xlink:actuate = "onLoad"
xlink:show = "embed"
xlink:href="http://www.ringkee.com/flower.png"
width = "320" height = "240" />
xlink:actuate和xlink:show是可选的。
xlink:title和xlink:role属性可指定资源之间的描述,xlink:title包含少量描述远程资源的文本,xlink:role包含URI,指向资源的较长描述。
Chapter 7. 分析XML
Table of Contents
7.1. 分析器工具
7.2. Unicode
分析XML文档可通过程序来做,分析器有两大类,一种是事件驱动的,一种是基于树模型的。
使用事件驱动的分析器时,每遇到一个元素就会触发一个事件,由事件处理器进行处理。事件分析器按顺序读取XML文档,而不把整个文档读入内存,所以处理速度很快。但缺点是由于要从头到尾读取XML文档,因此无法在XML文档中移动位置。事件驱动分析器适合处理其它地方使用的XML数据,如转换成HTML文档或从文件中读取数据并插入数据库中。它的优点有:
文件搜索,从XML文档中搜索需要的标志或数据;
格式转换,如转换成HTML。任何需将原始XML转换成另一种格式的工作都最好使用事件驱动分析器来完成,因为它可动态将信息转换成新格式。
少量修改,你可用事件驱动分析器读取和重新生成XML。在分析过程中,可以改变少量的单语、字符数据内容或重新构造XML。事件驱动分析器特别适合整理和重新格式化XML文档。
简单验证,由于整个文档不在内存中,所以无法进行完整验证,但可检查拼写错误和一般良构XML文档之类的简单问题;
建立内部结构,可以使用事件驱动分析器建立XML文档的复杂内部表示,如基于树的接口使用的树式结构。
事件驱动分析器不能在XML文档间交叉引用文档内容,但它使用简单,速度快。
基于树的分析器把整个XML文档读入内存,并生成树状结构。分析器可随机访问树中的任意节点,并能修改树结构和内容。
7.1. 分析器工具
现有的分析器种类有上百种,但常用的是两个标准的工具库,一个是XML简单API(SAX,Simple API for XML)和文档对象模型(DOC,Document Object Model)。SAX是事件驱动分析器的标准,而DOM是基于树的分析器标准。另外,Expat虽然不是标准,但它是脚本语言中处理XML时最常用的分析器。Expat由James Clark编写,是事件驱动分析器。