• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:05来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

W 3 C指定下面一些信息可组成程序段的环境信息:
• 用于原始文档的D T D的U R I
• 文档的内部子集的U R I
• 从中提取出程序段的原始文档的U R I
• 原始文档中程序段位置的详细说明书
• 程序段体的祖先信息
• 程序段体的兄弟信息
• 每个祖先的兄弟信息
• 每个祖先或者兄弟的后代信息
• 上面所指的这些元素的属性信息
要注意的是这覆盖了节点树中除包含特定的程序段以外的所有节点;X M L服务器的作者可
设计出程序段发生器,用于函盖与接收方解释程序段这个目的相关的信息的每个部分。
3. 如何描述程序段
W 3 C已经为申明程序段产生如下的命名空间:
h t t p : / / w w w . w 3 . o r g / X M L / F r a g m e n t / 1 . 0
< f c s >元素(Fragment Context Specifier的缩写)是程序段上下文详细说明的外包元素。所有
的程序段上下文都用< f c s >元素括起来,它具有下面四个属性:
• extref—原始文档D T D的U R I。
第8章链接和查询使用283 下载
• intref—“扩展”内部子集的U R I。
• parentref—原始文档本身的U R I。
• sourcelocn—原始文档内程序段位置的规范。
值得注意的是此时W 3 C没有为定位指定编码方案,虽然我们希望W 3 C利用XPo i n t e r来指定
位置。
< f c s >元素的子结点应该是原始文档元素树的某一部分(可能会包含属性)。并且,要描述的
元素数的部分由发送应用程序决定,而且是基于接收应用程序的需求。在子树中程序段体应该
归属的位置,应该包含一个< f r a g b o d y >元素。这个元素具有属性—f r a g b o d y r e f—应该是正确
程序段的U R I索引。
让我们看下面的例子。假如说我们有如下的目录文件:
程序清单8 - 6 7
我们仅把书的I S B N发送给接收方,我们会产生一个文档块上下文的详细说明,如下所示:
程序清单8 - 6 8
这里你可以看到程序段上下文详细说明文件包含< C a t a l o g >元素和< B o o k >元素,提供了程
序段的上下文和第二文件的索引,它准确包含了所需求的程序段。在以< f r a g b o d y >元素引用
“h t t p : / / w w w. w r o x . c o m / C a t a l o g / I S B N . X M L”的程序段自身文件中,我们可得到下面的程序
段:
284使用XML 高级编程
下载
程序清单8 - 6 9
8.5.5 回顾实例
下面再看一下我们的三个例子,了解如何利用程序段和上下文将信息发送给接收方的。
1. 我描述什么
前面我们试图解决如何断定发送到接收方的价格是和咖啡相关而不是书。如果我们传输下
面的程序段和上下文的详细说明:
程序清单8 - 7 0
使用者将会知道下面的程序段是< C o ff e e >元素的孩子,< B o o k s t o r e >元素的孙子:
程序清单8 - 7 1
所以对于接收方来说P r i c e . x m l文件中< P r i c e >元素表示什么就变得很明显了。
2. IDREF和I D R E F S
如果作者所编辑的内容全部在第四章的话,那么她如何为第一章的一个段落添加一个索引
I D呢?如果我们发送出下面的程序段上下文详细说明:
程序清单8 - 7 2
第8章链接和查询使用285 下载
作者会有一个到本章上下文的引用,它是I E 5 X M L C h a p t e r 4 . x m l文件的一个片段:
程序清单8 - 7 3
现在,作者在程序段上下文详细说明文件中拥有可以反馈到每一章各位置的I D,可以发
送—也就是说可以为IntroChap4 添加一个I D R E F用于回指第一章中给出的关于第四章的信
息。
3. 验证处理器
为了保证验证处理器运行良好,我们引入一个除character 数据外的所有必备元素的副本—
最优元素将被剔除。这样对这个例子来说,我们可以传输下面的程序段上下文详细说明:
程序清单8 - 7 4
它提供了具有使下面程序段有效的所需元素的处理器:
程序清单8 - 7 5
需要指出的是我们去掉了< C a t e g o r y >元素(这是由于我们在D T D中声明< C a t e g o r y >是可选
的)和附加的< C h a p t e r >元素(这是由于在D T D中< C h a p t e r >被指定具有一个或多个事件)。收到
这两个文件时,处理器会在适当的位置分析程序段体,就好像它是一个外部解析实体,去掉上
下文块的外包,并根据D T D来验证文档。
286使用XML 高级编程
下载
8.5.6 如何传输程序段
现在我们已经给出了一些程序段和程序段上下文详细说明,那么如何将它们发送给接收方
呢?W 3 C没有在X F I规范中强制程序段的传输方式,但它提供了两种不同的方法使识别片段接收
处理器可以收到传输。
1. 分离文件机制
我们已经看了程序段处理两个文件的方法。一个文件包含程序段本身,另外一个是程序段
上下文详细说明文件。为了发送信息给接收方,发送了程序段上下文详细说明文件。识别片段
接收处理器剖析了程序段上下文详细说明文件,并到f r a g b o d y r e f属性中的位置读取程序段本身
信息(参见图8 - 1 4)。
图8-14
不过这种方式需程序段服务器应用程序产生两个文件,其中一个文件被隐藏起来(通过将
文件存于硬盘或者其他机制)。而且,这需要在网络上多一个来回,而这是我们尽可能要避免
的。
2. 计划包机制
W 3 C声明了程序段传输在X F I规范范畴之外,不过提供了非正式(建议采用但并不必须的
W 3 C码)方法,令程序段和程序段体一起打包作为一个文件。最主要的一点就是建议采用一个
新的命名空间来提供包含程序段体的元素。就像如下形式来取代含有程序段上下文详细说明的
两个文件:
程序清单8 - 7 6
第8章链接和查询使用287 下载
XML片段服务应用程序
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(99)