(计算机软件与理论专业论文)用xpath和xslt查询xml文档.pdf_第1页
(计算机软件与理论专业论文)用xpath和xslt查询xml文档.pdf_第2页
(计算机软件与理论专业论文)用xpath和xslt查询xml文档.pdf_第3页
(计算机软件与理论专业论文)用xpath和xslt查询xml文档.pdf_第4页
(计算机软件与理论专业论文)用xpath和xslt查询xml文档.pdf_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用x p a t h 和x s l t 查询x m l 文档 计算机软件与理论专业 研究生陈刚导师杜中军 本文的写作基于如下的观点和事实:x m l 只是类型化值的多种表示 方法中的一种,软件代理程序可以利用其进行数据互换和互操作,把x m l 语法视为次要的细节。x m l 的x p a t h 规范维持原文档的层次性和结构, 适用于访问x m l 文档中独立的节点,而x s l t 规范适用于对被) ( p a t h 捕 获的节点进行处理。在此基础上,根据m a r kb i r b e c k ( x m l 高级编程第二 版的作者) 提出的观点_ x s l t 可用于查询x m l 文档,本文作者详细论述 了综合运用x p a t h 和x s l t 查询x m l 文档,并对多个关键性问题作了深 入的阐述,同时在文章结尾部分,提出了运用这两个规范来查询存储在关 系数据库中的x m l 数据的构想,并对此作了初步的探讨。 本文从x m l 的产生背景着手,简单介绍了h t m l 的不足和x m l 的 相对优点,接着分析了x m l 文档的结构,然后对x m li n f o s e t 作了介绍。 本文的第二部分对x p a t h 作了比较详细和全面的阐述,从x p a t h 简介, x p a t h 的数据模型,到x p a t h 表达式,其中对x p a 幽的定位路径表达式又 专门作了说明,最后详细介绍了x p a t h 核心函数库中的函数。第三部分讲 述x s l t 。在这部分,首先简单介绍了x s l t ,接着分析了x s l t 样式表 的结构和处理机制,也谈到了x p a t h 在x s l t 中的运用,接下来对x s l t 的专有函数和x s l t 元素作了比较细致而全面的介绍,最后专门谈及了 x s l t 中很重要的一个构件模板。 在第四部分论述了运用x p a t h 和x s l t 查询x m l 文档。针对查询 x m l 文档,本文作者提出了查询处理模型,解决了查询过程中的多文档 管理和模块化问题,并实现了递归与循环处理,条件控制,排序,分组和 数学计算等诸多查询功能,然后编写了几个运用x p a t h 和x s l t 查询x m l 文档的测试实例,同时还对x q u e r y l 0 作了简单的介绍。在本文的结束语部 分首先对x p a t h 和x s l t 在查询存储在关系数据库中的x m l 数据作了探讨。 在这个部分,针对从x s l t 到查询图的转换,本文作者提出了该转换的一 般规则,并基于一个己知的关系数据库的w e b 应用的中间件- - s i l k r o u t e , 作者提出了将x s l t 和x p a t h 应用于查询存储在关系数据库中的x m l 数 据的查询中间件。该中间件基于s i l k r o u t e ,但为了适用于x s l t ,作者对 其做了适当的更改。在文章的最后对x s l t l 0 和x q u e r y l 0 作了比较。 关键词:x p a t h x s l tx m lx q u e r y 查询 t h e a p p l i c a t i o no fx p a t h a n dx s l t i nq u e r y i n gx m ld o c u m e n t m a j o r :c o m p n t e rs o f t w a r ea n dt h e o r y p o s t g r a d u a t e :g a n gc h e l at u t o r :z h o n g j u nd u t h eo p i n i o n sa n df a c t st h a tt h i sc o m p o s i t i o ni sb a s e do na r ea sf o l l o w s : x m li so n l yak i n do ft h ee x p r e s s i o nm e t h o d so ft y p e dv a l u e s o f t w a r e a g e n tp r o g r a mc a r li n t e r c h a n g e a n di n t e r o p e m t ed a t ab yt h i s e x p r e s s i o n m e t h o d i nt h i so p i n i o n ,t h eg r a m n l e ro fx m li sr a n k e da m o n gt h em i n o r d e t a i l s x p a t hs p e c i f i c a t i o n so fx m lm a i n t a i nt h eh i e r a r c h ya n ds t r u c t u r eo f s o u r c ed o c u m e n t ,a p p l yt oa c c e s st h ei n d e p e n d e n tn o d eo fx m ld o c u m e n t x s l ts p e c i f i c a t i o n sa p p l yt op r o c e s st h er e s u l t so fq u e r y a c c o r d i n gt ot h e a b o v e - m e n t i o n e dn a r r a t i o na n dt h eo p i n i o no fm a r kb i r b e c k ,t h ea u t h o r e l a b o r a t e st h et h e m e ,w h i c hi st h ea p p l i c a t i o no fx p a t ha n dx s l ti nq u e r y i n g x m ld o c u m e n t a n di l l u s t r a t e ss e v e r a lk e yq u e s t i o n si nd e p t h i nt h ef i r h s e c t i o no ft h i sa r t i c l e t h ea u t h o re x p l o r e st h ea p p l i c a t i o no fx p a t ha n dx s l l i nq u e r y i n gx m ld a t aw h i c hi ss t o r e db yr d b m s t h i sa r t i c l eb e g i n sw i t ht h eb a c k g m u n do ft h ea p p e a r a n c ea b o u tx m l , t h ea u t h o rs u m m a r i e st h ed e f e n t so fh t m la n dt h ea d v a n t a g e so fx m l ,t h e n a n a l y s e st h es t r u c t u r eo fx m ld o c u m e n t i nt h ef i r s ts e c t i o n x m li n f o s e ti s i n t r o d u c e da tl a s t x p a t hi se x p l i c a t e di nd e t a i l i nt h es e c o n ds e c t i o n ,f r o m c o n c i s i n g :( p a t ha n de x p l i c a t i n g ) :p a t hd a t am o d e lt oi n t r o d u c i n gx p a t h e x p r e s s i o n i nt h i ss e c t i o n , ) ( p a t hl o c a t i o np a t he x p r e s s i o n i s e x p l a i n e d e n t i r e l ya n df i n e l y i nt h ee n d x p a t ht o r ef u n c t i o n sa r ce l a b o r a t e d x s l ti s i n t r o d u c e di nt h et h i r ds e c t i o n i nt h es e c t i o n ,a tf i r s t ,x s l ti si n t r o d u c e d c o n c i s e l y , t h e nx s l ts t r u c t u r ea n dp r o c e s s i n gm e c h a n i s ma r ea n a l y s e d ,t h e a p p l i c a t i o no fx p a t hi nx s l ti sa l s ot a l k e da b o u t ,s e c o n d l y , t h e s ef u n c t i o n s a n de l e m e n t st h a ta r ed e f i n e di nx s l ta r ee l a b o r a t e de n t i r e l ya n df i n e l y , f i n a l l y , t h em o s ti m p o r t a n tc o m p o n e n ti nx s l t , n a m e l yt e m p l a t e ,i s i n t r o d u c e d i nt h ef o u r t hs e c t i o n ,m a n yf a c e t sa p p l y i n gx p a t ha n dx s l tt oq u e r y i n g x m ld o c u m e n ta r en a r r a t e d a i m i n ga tq u e r y i n gx m ld o c u m e n t ,t h ea u t h o r p r o v i d e sq u e r yp r o c e s s i n gm o d e l ,s o l v e st h e s eq u e s t i o n sa b o u tm a n a g i n g d o c u m e n t sa n dm o d u l a rc o m p o n e n t s ,t h e nr e a l i z e st h e s ef u n c t i o n sa b o u t q u e r y i n gx m ld o c u m e n t ,s u c ha sr e p e t i t i o n ,c o n d i t i o n a lp r o c e s s i n g ,s o r t i n g , g r o u p i n ga n do t h e rq u e s t i o n sa b o u tm a t h i nt h es e c o n df r a g m e n to ft h i s s e c t i o n ,s e v e r a le x a m p l e sa p p l y i n gx p a t ha n dx s l tt o q u e r y i n gx m l d o c u m e n ta r ep r o v i d e d i nt h et h i r d f r a g m e n t ,x q u e r y l 0i s i n t r o d u c e d c o n c i s e l y i nt h ef i n a ls e c t i o no f t h i sa r t i c l e ,t h ea p p l i c a t i o no f x p a t ha n dx s l t i nq u e r y i n gx m ld a t aw h i c hi ss t o r e db yr d b m si se x p l o r e da tf i r s t i nt h i s f r a g m e n t ,f o rt h eu a n s f o r m a t i o n sf r o mx s l tt oq u e r yg r a p h ,t h ea u t h o r p r o v i d e st h eg e n e r a lr u l e so ft h et r a n s f o r m a t i o n s a n df o rt h ea p p l i c a t i o no f x s l ti nq u e r y i n gx m ld a t aw h i c hi ss t o r e db yr d m s ,t h ea u t h o rp r o v i d e s t h eq u e r ym i d d l e w a r et h a ti sb a s e do ns i l k r o u t e f i n a l l y , c o m p a r i n gx s l t l 0 w i t hx q u e r y l 0i st h ec o n c l u s i o no f t h ec o m p o s i t i o n k e yw o r d s :x p a t h x s l tx m lx q u e r y q u e r y 1 序言 1 1x m l 概述 1 1 1x m l 产生背景 当今,互联网已渗透到社会生活的每一个角落,在此过程中h t m l 超文本标记语言功不可磨,h t m l 以其简单精练的语句和易于掌握的通 用性和易学性,使w e b 技术从计算机世界走向全社会,走向千家万户。 然而由于电子商务,电子图书,远程教育等的异军突起,使传统的w e b 资源更加复杂化,多样化,于是高容量,高信息量,高效率成为网络信息 技术发展追求的目标,与此同时,人们对w e b 服务功能的需求也达到了 更高的标准,如:用户需要对w e b 进行智能化的语义搜索,对数据按不 同的需求进行多样化显示等个性化服务;公司和企业要为客户创建和分发 大量有价值的文档信息,以降低生产成本;以及对不同平台,不同格式的 数据源进行数据集成和转换等等。因此,面对着w e b 技术的飞速发展, h t m l 存在着如下的不足: h t m l 的标记集合是固定的。随着w e b 技术的发展,新的数据格式 不断出现并且需要在网上展现,这就需要有一种比较灵活的标记机 制来满足不断发展的w e b 内容要求,但标准的h t m l 语法格式过于 简单,且又不允许用户自己创建新的标记,这将无法支持那些专门 的页面格式,如:数学公式,化学方程式,音乐乐谱等。 d h t m l 的问题。由于标准的h 脚l 已经无法满足用户的需求,人 们在其基础上增加了动态的成分,如脚本程序等,但是这些非标准 的技术制作的网页在不同的浏览器之见互不兼容。 h t m l 只是一种表现技术,它并不能揭示h t m l 标签所标记的信息 的任何含义。 随着w e b 文件变得越来越大,越来越复杂,w e b 内容提供商已开始 感受到普通的h t m l 已经无法提供用于大规模商业出版所需的扩展 性,结构化和数据检查功能。 1 1 2 x m l 简介 1 9 9 6 年7 月w 3 c 开始设计x m l ,1 9 9 8 年2 月发布了x m l l 0 的第 一个版本。x m l 是s g m l 的一个简化子集,保留了s g m l s 0 的功能, 而其复杂程度只有原来的2 0 。x m l 将s g m l 的灵活性和强大功能与 h t m l 的易用性结合到w e b 的应用中,以一种开放的自我描述的方式定 义了数据结构,在描述数据内容的同时能突出对结构的描述,从而体现数 据之间的关系。 与普通的标记语言不同,x m l 是一种元标记语言,即它是一种用来 定义标记语言的标记语言。事实上,用户可以利用x m l 语法和有限的元 标记,来定义自己需要的任意的特殊标记集,即定义一种在功能上类似 h t m l 标记的标记集,从而形成自己所独有的一套标记语言。 相对于h t m l ,x m l 具有很多优点: x m l 是自描述的。x m l 允许根据各种不同的规则来制定标记, 如:商业规则,根据数据描述甚至根据数据关系来制定标记。x m l 实现了用定义它们自己的标记集来说明文档内容的功能,说明的 精度由实现者自己掌握。 x m l 支持对文档内容的验证。x m l 文档的内容和结构是由d t d 或x m l s c h e m a 来定义,我们可以根据它们来检验文档的有效性。 x m l 允许开发各种不同专业领域的特定标记语言,如;c m l , m a t h m l 等。 x m l 是非专有并易于阅读和编写的。这使得它成为在不同应用间 交换数据的理想格式。 x m l 是基于w 3 c 定制的开放标准,从而使得基于x m l 的应用具 有广泛性。 x m l 支持高级搜索。因为根据x m l 的语法规则,可以知晓文档 2 内容的结构和含义,所以在x m l 文档中的搜索较为容易。如果 w e b 页是x m l 格式的,则搜索会更高效,而且不仅可以搜索数据, 还可以在搜索中加入与数据相关的上下文信息,形成更为精确的 搜索机制。 正因为x m l 有相对于h t m l 的这些优点,有人把它称为下一代的 w e b 语言,甚至把x m l 说成是2 1 世纪的世界语,这些都说明了x m l 的 巨大潜力。 1 1 3x m l 文档的结构 1 1 3 1 规范的x m l 文档 在编写x m l 文档时,必须保证文档结构的规范性,这样浏览器才 能对其作出正确的解释,否则会报错。w 3 c 在x m l l 0 推荐标准中对x m l 文档的规范性作了定义。 当一个文本对象满足下列条件时,就是一个规范的x m l 文档: 整体上是一个标记文档。 必须满足x m l l 0 规范中所有的规范约束,即必须遵循x m l l 0 推荐标准中规定的语法规则。 文本中赢接或间接引用的解析实体都是规范的。 1 1 3 2x m l 数据结构 所有规范的x m l 文档都由以下三部分组成: 序言( 可选) ,它包含关于数据其余部分的重要信息。 主体,它由一个或多个元素以层次树的形式组成。 尾声( 可选) ,紧随元素树以各种各样的形式出现。 序言用于标记x m l 数据的开始,它描述数据的字符编码,并为x m l 解析器和应用程序提供一些其它的配置线索。序言包括:一个x m l 声明, 一个可选的文档类型声明,以及多个可选的注释,处理指令和空白字符等。 主体是x m l 文档中唯一必须存在的部分,是x m l 数据最主要的内 容。它包括:元素,属性,字符数据等,除此之外,注释,处理指令和空 白字符也可交叉存储在元素和字符数据中。主体被组织成一棵层次树,在 这棵树中存在唯一的根节点,其对应的元素为文档元素,是树中所有其它 元素的父元素,文档中所有其它元素都是它的后代。父一子元素之间要正 确的嵌套。 尾声是可选的,它可能包括:注释,处理指令或空白字符。 1 1 4 本文的出发点 对于x m l 文档,业界有两种不同的观点:其一,以文档为中心的 观点认为x m l 文档是一种带批注的文本文件,该文件包含标记指令,用 于控制被包含文本的格式和显示,强调x m l 的语法并将尖括号视为x m l 的中心主题。其二,以数据为中心的观点认为x m l 只是类型化值的许多 种表示方法中的一种,软件代理程序可以利用其进行数据互换和互操作, 而将x m l 语法视为次要的细节。本文从后一种观点出发,论述运用x p a t h 和x s l t 查询x m l 文档。) ( p a t h 维持原文档的层次性和结构,适用于访 问x m l 文档的独立节点,x s l t 适用于对查询结果进行处理,构建新的 元素,在有必要的时候重新组织结果元素,综合运用x s l t 和x p a t h 将允 许开发者随意而方便的对源文档进行操作和重组。 由于) p a t h 是x s l t 的基础和核心。所以在谈到x s l t 之前须先对 x p a t h 进行介绍。) ( p a t h ,即x m l 的路径语言,这一名称源予x p a t h 使用 基于路径的语法遍历文档的信息集。另外,x p a t h 的数据模型与x m l i n f o s e t p a r e n t c h i l d e n 模型平行,每个x p a i l i 节点的属性都可以通过对 应的x m li n f o s e t 信息项的属性查看,因此,在谈及x p a t h 之前有必要对 x m li n f o s e t 作一介绍。 1 2x m li n f o s e t 1 2 ,1x m li n f o s e t 简介 x m li n f o s e t ( x m li n f o r m a t i o ns e t ) 是所有x m l 规范中最关键的规 范,该i n f o s e t 将x m l 的核心抽象概念模型化为一组具有一个或多个命名 属性的结构信息项的集合。它的用途是为那些需要引用x m l 文档中的信 息的规范提供一组一致的定义。如果一个x m l 文档是规范的,并满足命 名空间的限制条件,那么这个文档就有一个信息集,不符合命名空间的 x m l 文档,即使就技术上而言是规范的也被认为不具有有意义的信息集, 但有信息集的x m l 文档不一定必须是有效的。信息集可以通过解析x m l 文档的方式来创建,也可以通过其它方式构造,血n :d o m 。 x m l 文档信息集由若干信息项组成,在这些信息集中必然包含一个 文档信息项和几个其它的信息项。信息项是对x m l 文档中某个部分的抽 象描述,每个信息项有一组相关的属性。规范将x m l 信息集表示为一棵 树,但并不一定要用树结构来构造x m l 信息集。在x m l 信息集树中, 文档信息项是树根,而处理指令,注释和字符信息项作为叶子节点,元素 信息项作为内部节点。另外,x m li n f o s e t 还定义了两个属性 p a r e n t 和 c h i l d r e n 。 p a r e n t 属性引用包含信息项,【c h i l d r e n 属性是子代的有序集合, 根据信息集树图,文档信息项没有 p a r e n t 属性,处理指令,注释和字符 信息项没有 c h i l d r e n 属性,元素信息项可以同时具有这两项属性,尽管其 c h i l d r e n 属性可能为空。 1 2 2x m li n f o s e t 的信息项 本文采用的x m l i n f o s e t 是w 3 c 2 0 0 4 年2 月4 日发布的推荐标准, 本标准的一个信息集最多可包含1 1 种不同类型的信息项,每个信息项都 有若干属性,每个属性都被赋予一个名称,属性名用方括号括起来。这里 只对与x p a t h 树模型中的节点相应的信息项作一介绍,其余的信息项不作 过多的说明。 1 2 2 1 文档信息项 每个信息集有且只有一个文档信息项,信息集中其余所有信息项都 可以从文档信息项的属性以及属性的属性等来获得。文档信息项包含以下 属性: c h i l d r e n :是一个子信息项的有序列表,此有序列表含有一个元素信息项, 所有位于文档元素( 即x m l 文档主体元素树的根) 外部的处理指 令,注释在此列表中都有一个相应的处理指令信息项和一个注 释信息项,而位于d t d 中的处理指令和注释在本列表中没有相 应的信息项。如果x m l 文档有文档类型声明,则在此列表中 有一个文档类型声明信息项。 d o c u m e n te l e m e n t :对应于文档元素的元素信息项。 n o t a t i o n :一个格式信息项的无序集合。所有在d t d 中声明的格式在本 无序集合中都有一个相应的格式信息项。如果存在被多次声明 的格式,则该属性没有值。 u n p a r s e de n t i t i e s l :一个非解析实体的无序集合。所有在d t d 中声明的非 解析实体在本集合中都有一个非解析实体信息项。 【b a s eu 【u 】:文档实体的基准u r i 。 c h a r a c t e re n c o d i n gs c h e m e 】:文档实体采用的字符编码方案的名称。 【s t a n d a l o n e 】:本属性表明x m l 文档是否是一个独立的文档。它的值是根 据x m l 声明中的独立文档声明来设定的。如果没有独立文档 声明,则该属性没有值。 【v e r s i o n :一字符串,表明文档遵循的x m l 版本号。本属性值是根据x m l 声明中的版本信息来设定的,如果没有声明,则本属性没有值。 【a l ld e c l a r a t i o n sp r o c e s s e d :严格地说,本属性不属于文档信息集的一部分, 它仅表明x m l 处理器是否已经读过了整个的d t d 。本属性的 值是一个布尔值,取f a l s e 或t r u e 。 1 2 2 2 元素信息项 对于出现在x m l 文档中的每一个元素,在信息集中都有一个相应 的元素信息项,其中必有一个文档信息项 d o c 啪e n te l 锄叫属性的值,该 元素信息项对应于元素树的根,以该元素信息项为起点递归地访问 【c h i l d r e n 属性,可获得其余所有元素信息项。元素信息项包含下列属性: 【n a m e s p a c en a m e :元素类型的命名空间。如果元素不属于任何命名空间, 则本属性没有值。 1 0 c a ln a m e :元素类型名的本地名,本属性不包括命名空间前缀和冒号。 p r e f i x :元素类型名的命名空间前缀。如果元素类型名没有前缀,本属性 没有值。 f c h i l d r e n :一个子信息项的有序列表。此列表包含元素信息项,处理指令 信息项,未展开实体引用信息项,字符信息项和注释信息项。 对于出现在当前元素中的每个元素,处理指令,对未展开外部 实体的引用,字符和注释,在此列表中都有一个相应类型的信 息项。对于空元素,此列表为空。 a t t r i b u t e s :一个属性信息项的无序集合。对于元素的每个属性( 无论是显 式指定属性值,还是根据d t d 得到的缺省属性值) ,在本集合 中都有一个相应的属性信息项。但元素的命名空间声明不包括 在此无序集合中。如果元素没有属性,则本集合为空。 n a m e s p a c ea t t r i b u t e s :一个属性信息项的无序集合。对于元素的每个命名 空间声明( 无论是显式指定属性值,还是根据d t d 得到缺省属 性值) ,在该集合中都有一个相应的属性信息项。取消缺省命名 空间的声明和取消前缀的声明也被认为是一个命名空间声明。 所有的命名空间属性都有一个命名空间u r i 。如果元素没有命 名空间声明,该无序集合为空。 i n - s c o p en a m e s p a c e :一个命名空间信息项的无序集。对于在元素范围内 有效的每个命名空间,在本无序集中都有一个相应的命名空间 信息项。本无序集合总含有一个 p r e f i x 属性值为 x m l 的命名 7 空间信息项。命名空间前缀 x m l 被隐式地绑定在命名空间 h t t p :w w w w 3 o r g x m l 1 9 9 8 n a m e s p a c e 上。本无序集合不包含 【p r e f i x 属性值为 x m l n s ”的命名空间信息项,包含 n a m e s p a c e a t t r i b u t e s 】属性中的所有命名空间信息项( 除了那些代表 x m l n s = ”和x m l n s :n a m e = ”的命名空间信息项,因为它们没有 声明命名空间,而是取消声明缺省命名空间或命名空间前缀) 。 在解析被限定名称的命名空间前缀时,本属性应优先于 n a m e s p a c ea t t r i b u t e s 属性被使用,因为在合成的信息集中这两 个属性可能不一致。 b a s eu r l l :元素的基准u r i 。 p a r e n t :本属性值是一个文档信息项或元素信息项,此信息项的 c h i l d r e n 属性包含本信息项。 1 2 2 3 属性信息项 对于元素的每个属性( 无论是显式指定属性值,还是根据d t d 得到 缺省属性值) ,包括命名空间声明,都有一个相应的属性信息项。一般属 性对应的属性信息项出现在元素信息项的 a t t r i b u t e s 。既没有缺省值又 没在使用时显式指定属性值的属性没有对应的属性信息项。属性信息项包 含如下属性: n a m e s p a c en a m e :属性的命名空间。对于不属于任何命名空间的属性, 本属性没有值。 1 0 c a ln a m e :属性的本地名。本属性不含命名空间前缀和冒号。 p r e f i x :属性名的命名空间前缀。对于不包含命名空间前缀的属性名,本 属性没有值。 n o r m a l i z e dv a l u e l :规范化后的属性值。 【s p e c i f i e d :此属性为一标记,它表示属性值是在元素的首标签中显式指 定,还是取自d t d 中的缺省值。 8 【a t t r i b u t et y p e :属性值的类型。属性的合法类型有:i d ,i d r e f , i d r e f s , e n t i t i e s ,n m t o k e n ,n m t d i ( i n s ,n o t a t i o n ,c d a t a 和 e n u m e r a t i o n 。对于没有声明的元素,该属性没有值。如果 尚未读到声明,并且文档信息项的 a i ld e c l a r a t i o n sp r o c e s s e d 为 f a l s e ,则此属性值为未知。此属性的值不受属性值有效性的影 响。 r e f e r e n c e s 】:如果 a t t r i b u t et y p e 】值为i d ,n m t o k e n ,n m t o k e n s , c d a t a 或e n u m e r a t i o n ,则此属性没有值;如果 a t t r i b u t e t y p e 为未知,则此属性值也为未知,否则本属性值为一有序列 表。该有序列表包含属性值引用到的元素信息项,非解析实体 信息项,格式信息项。 o w n e r e l e m e n t :此属性值为一个元素信息项,它的 a t t r i b u t e s 属性包含本 信息项。 1 2 2 4 处理指令信息项 文档中的每个处理指令都有一个相应的处理指令信息项,但x m l 声明以及文本声明不属于处理指令。处理指令信息项有如下的属性: t a r g e t :此属性值为一个字符串,表示p i 的目标。 f c o m e n t :此属性值为一字符串,表示p i 的内容。若p i 没有内容,则此 属性值为一空字符串。 b a s eu r i :p i 的基准u r i 。 n o t a t i o n :此属性为一格式信息项,该信息项的 n a m e 属性值与本p i 信 息项的 t a r g e t 属性值相同。如果该格式未被声明或多次声明, 则本属性没有值;如果尚未读到声明,并且文档信息项的【a l l d e c l a r a t i o n sp r o c e s s e d 属性为f a l s e ,则本属性值为未知。 【p a r e n t :此属性值为一文档信息项,元素信息项或文档类型声明信息项, 该信息项的 c h i l d r e n 属性包含本信息项。 9 1 2 2 5 字符信息项 文档中出现的每个数据字符( 无论是字符引用还是c d a t a 段中的 字符) 都有一个相应的字符信息项。每个字符在逻辑上都是分开的信息项, 但x m l 应用程序可以根据需要自由地将字符组织成更大的块。字符信息 项有如下的属性: 【c h a r a c t e rc o d e :字符对应的i s 0 1 0 6 4 6 字符代码。 e l e m e n tc o n t e n tw h i t e s p a c e :此属性值为布尔量,表明一个字符是否是 元素内容中的空白。在字符不是空白的情况下,其值为f a l s e 。 p a r e n t :此属性值为一元素信息项,该信息项的f c h i l d r c n 】属性包含本信息 项。 1 2 2 6 注释信息项 x m l 文档中的每一个注释( 除了d t d 中的外) 都有一个相应的注 释信息项。注释信息项包含如下的属性: c o n t e n t :此属性值为一字符串,它表示注释的内容。 p a r e n t :此属性值为一文档信息项或元素信息项,该信息项的e c h i l d 陀n 】 属性值包含本信息项。 1 2 2 7 命名空间信息项 每个元素对应的元素信息项都有一个 i n s c o p en a m e s p a c e 属性, 对于在该元素范围内有效的每个命名空间绑定在这个属性中都有一个相 应的命名空间信息项。命名空间信息项包含如下属性: 【p r e f i x :命名空间前缀。从语法上说,本属性的值为属性名中位于前缀 “x m l n s ”后的部分。如果属性名为“x m l n s ”( 即声明缺省命名 空间) ,则本属性没有值。 n a m e s p a c en a m e :命名空间前缀对应的命名空间名。 1 2 2 8 其它信息项 在w 3 c 2 0 0 4 年2 月4 日发布的x m l i n f o s e t 推荐标准中,还有其 它四种类型的信息项,它们是:格式信息项,非解析实体信息项,文档类 型声明信息项和未展开实体引用信息项,这几种信息项分别用于描述在 d t d 中声明的每个格式,每个非解析一般实体,x m l 文档中的文档类型 声明以及每个尚未展开的对外部一般实体的引用。 2 x p a t h 2 1x p a t h 概述 2 1 1x p a t h 简介 x m li n f o s e t 的定义暗示了给定的x m l 文档中信息项的固有层次关 系,这些固有的关系有助于对文档子集寻址,然而,x m li n f o s e t 并未定 义寻址和标识这些子集的统一语法。 w 3 c 在1 9 9 9 年1 1 月1 6 日发布了x p a t h l 0 的推荐标准,事实上, 在同一天发布的还有x s l t l 0 的推荐标准。x p a t h l 0 之所以能够脱离 x s l t l 0 而单独成为一个规范,是因为w 3 c 认为许多其它的x m l 规范 也需要对文档的各个部分进行寻址访问。如今,x p a t h 已成为很多x m l 相关规范的核心,如:x p o i n t e r , x q u e r y 等。 x p a t h l 0 是致力于为x s l t 和x p o i n t e r 的公共功能提供一种共同的 语法和语义的结果。x 口a t l l 的主要目的是对一个x m l 文档进行寻址,为 了支持这个目的,它也为操作字符串,数值和布尔值提供了一些基本的功 能。x p a t h 利用一个紧凑的,非x m l 的语法,来实现在u r i 和x m l 属 性值中的运用,它基于x m l 文档的逻辑结构,而不是在它的表面语法上 进行导航,用来定位x m l 文档中各个部分和选择文档中的构成部件,如: 元素,属性,文本等。除了用来寻址外,x p a t h 自身的一个子集能够用于 匹配,即验证一个节点是否匹配某个模式,x p a t h 的这种用法定义在x s l t 的规范中。 2 1 2x p a t h 数据模型 2 1 2 1x p a t h 数据模型简介 如前所述,x p a t h 是运行在x m l 文档的抽象逻辑结构上的,x p a t h 的寻址是基于一种节点树模型,该模型将x m li n f o s e t 的相应信息项映射 为树模型中的节点( 但该树模型中的节点与x m li n f o s e t 的信息项并非一 一对应) ,而x s l t 也使用了与x p a t h 基本相同的数据模型。x p a t h 定义了 七种节点类型,分别是:根节点,元素节点,属性节点,文本节点,处理 指令节点,注释节点和名称空间节点。在一个文档的所有节点之间存在着 一种称之为文档顺序的顺序,该顺序对应于在x m l 文档中每个节点的开 始标记出现的顺序,具体而言是:一个元素节点出现在它的所有孩子节点 之前,元素的属性节点和命名空间节点出现在该元素的所有孩子节点之 前,其中命名空间节点出现在属性节点之前,多个命名空间节点之间的相 对顺序依赖于实现,多个属性节点之间的顺序也依赖于是实现。下面,对 x p a t h 树模型中的七种节点作一介绍: 根节点:根节点是文档实体本身,它包含所有其它节点,是x 却h t 树模 型的根。出现在x m l 文档序言中以及文档元素之后的处理指 令和注释直接作为根节点的孩子节点。 元素节点:x m l 文档中的每个元素都对应于树模型中的一个元素节点, 元素节点的孩子可以为元素节点,注释节点,处理指令节点, 命名空间节点以及其内容的文本节点。对内部或外部实体的 实体引用将被展开,字符引用也被分解。 属性节点:每个元素节点都有组相关的属性节点。在x m l 标准中详 细说明了属性节点的字符串值,它是一个规范化的值、。 命名空间节点:每个元素节点可以有相关的命名空间节点,它是在x m l 文档中声明的在元素范围内有效的每个命名空间前缀 ( 包括x m l ,它是由x m l 命名空间建议隐式地声明的) 以及默认命名空间。元素节点是它的每个命名空间节点 的父节点。 处理指令节点:除了文档类型声明中的处理指令以外,每个处理指令都 注释节点 文本节点 对应一个处理指令节点。 除了在文档类型声明中出现的注释以外,每条注释都对应着 一个注释节点。 x m l 源文档中的字符数据构成文本节点,每个文本节点都 包含尽可能多的字符数据,而且不会出现两个相邻的文本节 点。 考查如下的这个简单的x m l 文档: p p p o e e o m 吲c o m p a n y 2 0 0 2 1 0 0 0 0 该文档的x p a t h 树模型如下: 撤节点 仁 t e x t 广 1 。一 a t t r i b u c t e 黼2 1 树横戮实例 2 1 2 2x p a t h 树模型到x m li n f o s e t 的映射 、 、h _ e l e m e n t 如前所述,x p a t h 定义了自己的数据模型,该模型是基于节点树的。 x p a t h 节点的属性都可以通过对应的x m li n f o s e t 信息项属性来查看,例 如:根节点与x m li n f o s e t 的文档信息项相一致,其子节点映射到文档信 息项的 c h i l d r e n j | j 羁性,只包含三种类型的节点:元素节点,处理指令节点, 注释节点。而元素的属性映射到元素信息项 a t t r i b u t e s 属性,因此不被 认为是元素节点的子节点。从x p a t h 树模型到x m li n f o s e t 的映射如下: x p a t h 节点类型 x m li n f o s e t 信息项 根节点文档信息项 元素节点元素信息项 属性节点属性信息项 文本节点字符信息项序列 处理指令节点处理指令信息项 注释节点注释信息项 名称空间节点命名空间信息项 表2 1 1 4 2 1 3x p a t h 表达式 2 1 3 1x p a l h 表达式简介 表达式是x p a t h 最基本的概念,x p a t h 表达式分为定位路径表达式, 布尔表达式,等式表达式,关系表达式和数值表达式,其中定位路径表达 式是x p a t h 表达式中最重要的一种类型,其余类型的表达式可以用于结果 对象不需要是节点集的任何情况,通常出现在x p a t h 谓词和各种x s l t 结 构中,如:x s l :i f 元素中。现对除定位路径表达式外的表达式作一简单介 绍, 而定位路径表达式将在下一节专门说明。 布尔表达式:布尔表达式的操作符为o r 和a n d ,x p a t h 支持标准的a n d o r 布尔表达式,每个操作数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论