曝光台 注意防骗
网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者
程序清单9 - 2 5
第9章转换XML使用339 下载
在上面的例子中,我们用< x s l : c h o o s e >方式建立if/elseif 命令。每一个条件用< x s l : w h e n >元素
判断。你可能注意到我们使用和上一个例子一样的表达式,但是这一次使用它检验每一个单独
的分支。既然这样,我们检验是否< C AT E G O RY >元素数据内容包含字符串‘ H T M L’。如果是真
的,我们把这行的颜色属性设为红色。我们继续这种方式,检验另外一个c a t e g o r y类型。和上一
个例子不同的是,我们检查许多条件,而上一个只是检查简单的条件。图9 - 1 8显示了输出。
需要说明的一个重要情况是,我们使用了一种子程序作为模板,简单的表格不能使用这种
方式。因为这样,我们使用通常的< x s l : s t y l e s h e e t >命令替代它。
340使用XML 高级编程
下载
图9-18
9.4.5 名称模板
在前一个例子中我们使用没有参数的名称模板:
程序清单9 - 2 6
一个名称模板能够接收参数。在我们的例子中,想要行头部的对齐方式作为参数(左、右、
居中)。为了这样做,我们加入< x s l : p a r a m . . . >元素命名模板,像下面的片段中显示的那样:
程序清单9 - 2 7
一个参数被命名为a l i g n m e n t,它的默认值是l e f t。另外一个是c o l o r,它的默认值是g r e e n。这
些默认值能被c a l l - t e m p l a t e重载为命名模板的参数值:
程序清单9 - 2 8
第9章转换XML使用341 下载
下面显示了用c a l l - t e m p l a t e命令创建的两个不同的H T M L文档(参见图9 - 1 9)。第一个图是用
c a l l - t e m p l a t e创建,无参数,两个参数值是默认的, a l i g n m e n t的值为l e f t,c o l o r的值为g r e e n。另
外一个模式是带参数的c a l l - t e m p l a t e命令创建的,在A S P种类中,两个参数被设为c e n t e r和r e d。
图9-19
9.4.6 编号方式
现在,让我们给X S LT风格表加入行编号,其结果将如图9 - 2 0所示。
图9-20
为了获得这个结果,我们使用和前一个例子相同的样式表,但是这一次我们加入
< x s l : n u m b e r. . . >命令。命令的属性是v a l u e和f o r m a t,v a l u e指明了插入到输出树中的值, f o r m a t指
明了输出的格式。我们指定v a l u e属性为元素集(< I T E M >元素)中的当前指针位置。下面是代码
段的模式:
程序清单9 - 2 9
342使用XML 高级编程
下载
< x s l : n u m b e r. . . >元素能够使用一些另外的属性,增加它的灵活性。要得到更多的细节,查看
X S LT在网上h t t p : / / w w w. w 3 . o rg / T R / x s l t中的声明。
下面是前5个例子的总结,在原始B o o k l i s t X M L文档中应用的X S LT命令:
• 循环—使用< x s l : f o r- e a c h . . . >元素。
• 排序—使用< x s l : s o r t . . . >元素。
• 条件处理—使用< x s l : i f . . . >或< x s l : c h o o s e . . . >元素。
• 名称模板—使用<xsl:template name...>,< x s l : p a r a m . . . >,< x s l : w i t h - p a r a m . . . >和< x s l : c a l l -
t e m p l a t e . . . >元素。
• 编号方式—使用< x s l : n u m b e r. . . >元素。
程序清单9 - 3 0
第9章转换XML使用343 下载
图9 - 2 1是通过以下步骤实现的。
• 用X T转换原始的X M L文档。
• 使用Microsoft IE显示转换的结果(H T M L文档)。
任何一个与W 3 C规范完全兼容的X M L浏览器将转换和显示文档,如果初始的X M L文档包含
一个< x s l : s t y l e s h e e t . . . >元素。
图9-21
9.4.7 拷贝
我们现在可以对Booklist XML文档执行一个不同的操作。我们将在转换后的文档中保留与
344使用XML 高级编程
下载
初始的X M L文档一样的命令,并且结果仍然为X M L。我们将对< I T E M >元素进行简单的排序,
根据它的< C O D E >值(数据内容)。下面的列表将完成这项工作:
程序清单9 - 3 1
首先,只有一个模板用于匹配任意的元素节点。然后, < x s l : c o p y >元素指明X S LT引擎拷贝元
素节点到结果树。我们也告诉X S LT引擎通过< C O D E >元素的值进行排序。结果通过下面的X M L文
档进行了演示—初始的文档保持了它的命令,但是<ITEM>元素根据<CODE>的值进行了排序:
程序清单9 - 3 2
9.5 使用DOM进行XML文档的转换
一个X M L文档也可以使用D O M来转换。D O M是一个树林的接口,用于文档的表示。然而,
第9章转换XML使用345 下载
使用D O M来转换X M L文档可能会步入危险的境地,因为大部分的D O M实现可能有大量的私有
的命令。然而,作为这些操作命令的一种解释,你应该把它归咎于D O M规范的不足。例如,甚
至在D O M 2规范中也没有指出如何装入或存储一个X M L文档,所以一个D O M实现器将不得不发
明出对于文档适合或不适合的方法,这样在很多的情况下,他们包含了一些私有的命令。
9.5.1 用DOM进行命令的转换
为了比较在X S LT和D O M转换X M L文档命令的方法,让我们使用这一章中前面的命令化转
换部分的同一个例子。
为了更新,我们想进行一个X M L文档转换,具有这样的形式:
程序清单9 - 3 3
成为X M L文档具有这样的形式:
程序清单9 - 3 4
346使用XML 高级编程
下载
下一部分将展示,V B S c r i p t可以修改Booklist XML文档的命令。
V B S c r i p t例子
V B S c r i p t可以同我们使用X S LT一样获取同样的结果。这一部分中的脚本不可移植(原因将
在下一部分描述),并且只能运行在Wi n d o w s平台上。这就是在使用X S LT与使用带D O M的脚本
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:
XML高级编程上(114)