• 热门标签

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

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

语言的主要不同。为什么选择V B S c r i p t?原因很简单—因为三百万的开发者可以读懂它。
下面的脚本可以通过Windows 脚本主机(W S H,Windows Script Host)来运行。假设你已
经安装了W S H,很简单,将文件保存为Tr a n s f o r m . v b s,并且双击它:
程序清单9 - 3 5
第9章转换XML使用347 下载
让我们看一下这个脚本的更多的细节。第一个任务是使用C r e a t e O b j e c t ( )方法创建一个D O M
对象。然后装入源文档到D O M中,分析它,并且填入内部的树状命令—所有这些使用l o a d ( )方
法:
上面的两行不是D O M规范的一部分,它们只是特别用在V B S c r i p t环境中。
很幸运,我们没有得到一个复杂的文档命令,使用g e t E l e m e n t s B y Ta g N a m e ( )方法可以很容易
地得到需要的元素。如果文档命令包含同样的元素,但是位于不同的级别下,可能就会复杂得
多。那么,下一步就是得到需要转换的所有的元素对象:
程序清单9 - 3 6
现在我们需要处理包含在b o o k l i s t中的任何的< I T E M >元素对象。为了实现它,在D O M中我们
获得了< I T E M >元素节点的对象实例的个数,使用l e n g t h ( )方法。你可能希望在这里是c o u n t ( )方法,
但是W 3 C规范使用l e n g t h ( )来表示一个计数实例。注意,有效子节点的范围是从0到l e n g t h - 1。
因为我们不得不增加一个新元素节点作为< I T E M >元素的子节点,我们创建了一个对象工厂
保含在D O M对象中:
然后我们在当前处理的< I T E M >节点的后面追加新的元素,作为一个子节点。一个元素对象
被返回,代表了< D E S C R I P T I O N >元素节点。
到这个阶段, 我们已经修改了内部命令,通过增加
< D E S C R I P T I O N >节点为< I T E M >元素的子节点,如图9 - 2 2所示。
然后我们包含了< T I T L E >、< C O D E >和< C AT E G O RY >作为
< D E S C R I P T I O N >元素的孩子:
实际上,我们移动了这些节点的实际位置到一个新的位置,如图9 - 2 3所示。
然后我们使用同样的方法来创建一个新的< L I S T I N G >元素节点。我们生成它,并把它作
为子节点插入到< I T E M >元素节点中,我们将< R E L E A S E _ D AT E >和< P R I C E >元素节点从原来
作为< I T E M >元素节点的子节点的位置,移动到作为< L I S T I N G >元素节点的子节点的新的位
置:
348使用XML 高级编程
下载
图9-22
图9-23
程序清单9 - 3 7
最后,我们将转换后的节点存为一个X M L文档:
9.5.2 在运行时修改一个XSLT文档
直到现在,我们一直停留在标准的界限里,并且以前的例子可以在任何一个遵循W 3 C推荐
标准的X S LT处理器上运行。然而,在这一部分,我们将使用一些M i c r o s o f t的专有扩展来演示
X S LT是如何使用在用户交互上的。
一个X S L 样式表有两种激活方式。一种是在要进行处理的X M L 文档中包含一个
< x s l : s t y l e s h e e t >处理指令,另一种是通过D O M的私有扩展进行交互。在所有前面的例子中,我
们使用了处理指令作为一个与样式表的链接,但是在这一部分,我们将使用微软的专有的D O M
扩展来同X L S T处理器进行交互,用来显示如何用X S LT排序图书列表。
在这个例子中使用的几个命令对于M i c r o s o f t的I E 5是特殊的。一些命令不过是过时的X S LT
命令,其他的在这个实现中是流行的,但不是W 3 C标准的一部分。所以,举出的例子只能在
M i c r o s o f t的I E 5上工作。其他的X S LT引擎,像X T,将会报错。
下面的X S LT脚本将用于翻译Booklist XML文档:
程序清单9 - 3 8
第9章转换XML使用349 下载
M i c r o s o f t的I E浏览器要做的第一件事是分析X M L和X S L文档。M i c r o s o f t的分析器为两个文
350使用XML 高级编程
下载
档创建了一个文档模型。这些文档中的每个都可以被D O M的扩展版本进行处理。M i c r o s o f t用
C O M接口实现了D O M,并且加入了新的函数。我们可以说,在某些方面M i c r o s o f t的扩展接口继
承了W 3 C的标准接口,并且加入了新的属性和方法。就是这些被加入的方法,不是W 3 C的方法,
我们将在例子中使用。
执行运行时动态行为的元素是< s c r i p t >元素。在运行时被分析和执行的第一个脚本没有与任
何特别对象关联。这个脚本即没有f o r属性也没有e v e n t属性。
程序清单9 - 3 9
脚本本身是用< x s l : c o m m e n t >元素括起来的。< x s l : c o m m e n t >被翻译(在输出树中)成X M L
文档注释元素。这个脚本是用J a v a S c r i p t所写的,你可能注意到,我们声明了三个对象,并且赋
了一个n u l l值。
在运行时将被激活的第一个事件是w i n d o w. o n l o a d事件。我们在这个事件上附上一段脚本:
程序清单9 - 4 0
首先,我们从文档对象中得到X S L样式表文档。然后,我们从文档对象中得到X M L文档。在
X M L对象分级中,文档对象包括了两个扩展的D O M:
X M L扩展D O M和X S L扩展D O M(参见图9 - 2 4)。
两个对象都是有用的,对排序、转换和在I E上显
示X M L文档。
我们也可以从X S L树上得到排序域对象。为了得
到这个对象,我们请求扩展D O M返回找到的包含
o r d e r- b y属性的第一个对象。这里有一个单个的元素包含这样的属性: < x s l : f o r- e a c h >结构。
程序清单9 - 4 1
第9章转换XML使用351 下载
图9-24
文档
XML文档(XML Document)
XSL文档(XSL Document)
应该提醒大家的是,在写出这个文档的时候,最新的规范已经改变了排序机制,这个命令
不再是一个标准的了。所以,当I E变得与这个规范兼容时,排序应该被定义成:
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(115)