• 热门标签

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

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

< P r i c e >都是< B o o k >的孩子,并且< C a t e g o r y >是< B o o k >的孙子,是< R e c S u b j C a t e g o r i e s >的孩子。
这就是为什么我们说,这个抽象的树状命令是一种独立于处理它的A P I的一种模型(正如W 3 C的
D O M),并且这种命令是X S L处理器所使用的,用于选择命令中的相应部分。X P a t h是一种语言,
用于处理树中的任何元素。
314使用XML 高级编程
下载
图9-2
2. XSL处理器如何转换源文档
正如我们所说, X S LT操作的是文档的模型而不是语法。源和目标格式都是X M L的应用,并
且两个的分级命令都是一棵树。另外X S L样式表是一个X M L文档,所以它也可以用一棵树来表
示。所以, X S LT处理器一共有三棵树。
X S LT是一种公布的语言,意思是你来指定结果的显示,胜于说它如何被转换,并且这就是
为什么我们使用X S L处理器来做这件工作。X S L样式表是由模板组成,它指定了源树中的每个节
点在结果中应如何显示。
图9 - 3说明了处理器是如何工作的。
图9-3
第9章转换XML使用315 下载
元素节点
属性节点
值节点
样式表XSL
XSL 引擎
结果节
点树
指令执行
样式单节点树
(模板)
源节
源点树
图例
源节

样式表结
果节点
样式表指
令节点

XML
XML
格式化的
对象
格式化的
对象
结果
在这里面我们可以看到有三个命令。记住源和结果命令都是文档的抽象表现。处理器遍历
源树林,从根开始,查找与在样式表中模板相匹配的节点。当找到一个,它使用在模板中的规
则在结果树中写出结果的抽象表示。然后,在源文档中继续移动,一个节点接着一个节点,根
据前导的X S LT指令< x s l : a p p l y - t e m p l a t e >,在样式表中查找相应的匹配。如果没有可匹配的模板,
它就移动到下一个命令。我们可以说它执行一个缺省模板,不输出任何结果。然后,结果树被
转换成一个X M L文档、文本、H T M L文档或希望的结果。
这个,在理论上可能会发生。但是也有不同的变化关于如何建立X S LT引擎。X S LT引擎可能
被优化,并且样式表可能不再需要被存储为树林或树状命令。然而,这给出了它们行为的一般
的方法。
在浏览过一个X S L处理器为了执行它的转换是如何工作之后,你将需要确认在机器上已经安
装了这个章节的例子。有不同的方法来实现一个X S L处理器,让我们看一下其中的两个:
• M S X M L—M i c r o s o f t的X M L解析器,有一个D O M接口,以D O M组件的形式包括了一个
X S LT引擎。包含在I E 5中M S X M L引擎与推荐的相比已经相当过时了。技术预览版则更新
一些。
• X T—James Clark的致力研究的X S LT引擎。它是用J a v a编写的,所以可以跨越平台。从
最新的X S LT规范的一致性来说X T要更新一些。
MSXML XSL处理器M S X M L不只是一个解析器,它还包括了一个X S L处理器。M S X M L
同I E 5高度集成,但是也可以做为一个独立的C O M组件,可从h t t p : / / m s d n . m i c r o s o f t . c o m / x m l得到,
用于应用程序的集成。这个组件使用D O M来操作X M L文档的抽象树状命令。因为这样,它可以
被接口化用在像J a v a S c r i p t、D e l p h i、Visual Basic 、Vi s u a l C O B O L、V B S c r i p t、P e r l S c r i p t、
P y t h o n S c r i p t、C + +等语言中。这个组件要求至少系统中有I E 4或以上版本存在,因为M i c r o s o f t的
X S LT引擎需要一些它提供的其他的D L L。
最初的D O M接口被定义成使用C O R B A接口定义语言(I D L,Interface Definition Language),
但是M i c r o s o f t的组件技术C O M使用不同的I D L,所以M S X M L组件接口是用COM IDL来定义的。
不过, M i c r o s o f t的D O M实现,考虑了推荐的精神,在对象接口中保留了同样的方法名。接口
I X M L D o c u m e n t是相当于W3C DOM一级d o c u m e n t接口。W3C document接口从n o d e接口派生,
很像I X M L D o c u m e n t接口从I X M L N o d e接口派生而来。I X M L D o c u m e n t接口已经被扩展,包含了
针对X M L文档解析及转换的额外方法。
例如,下面的A S P脚本用于M S X M L组件的I X M L D o c u m e n t接口来解析要转换的X M L文档和
X S L样式表。然后,它将分析过的源X M L文档进行转换,通过使用分析过的X S L转换表:
程序清单9 - 4
316使用XML 高级编程
下载
使用M S X M L转换文档的一般机制是:
• 装入要转换的初始文档。l o a d ( )方法同时会解析文档,以便文档作为一棵树状命令被保存
(像我们在前面看到的一样)。
• 装入X S LT文档。l o a d ( )方法再一次解析文档并将其转换成树。
• 使用t r a n s f o r m N o d e ( )函数进行转换。这个函数返回一个字符串(一个B S T R)。在返回字符
串中包含了转换后的文档。所以,如果X S LT转换表包含一个从X M L到H T M L转换的话,
保存在结果串中的文档就是一个H T M L文档。
• 集成在M S X M L组件中的组件有。
• 一个X M L解析器。
• 一个扩展的D O M一级树状接口。
• 一个X S LT转换引擎。
XT XSL处理器X T是另一种流行的X S LT处理器;由James Clark组写,易于使用并且可以
从作者的主页上自由下载,网址是: h t t p : / / w w w. j c l a r k . c o m / x m l / x t . h t m l。它使用J a v a编写,并且
已经在几种J a v a虚拟机上被成功地测试。对于Wi n 3 2平台,可以下载一个单一的执行码,并且它
要求在机器上安装了M i c r o s o f t的J a v a虚拟机。这个处理器将有助于实验这一章中所介绍的不同
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(107)