曝光台 注意防骗
网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者
你来说还只是一种想法)为新的命令。
转换在X M L中担当着一个重要的角色,要记住,一旦使用X M L做了标识,我们就可能重新
使用数据。毕竟,如果我们仅是需要执行一个简单的转换工作,那就没有必要将数据保留两个
版本了。X S L的转换能力非常适合这类转换。
9.1.2 动态转换
上一节考查了一下以不同的方式提供相同的数据,两种方式都要求明确的,静态版本的
X M L文档。但是也意味着我们可能需要做更多的动态转换。如果你考虑过电子表格,在近二十
年之前,它无庸置疑地改革了桌面P C的使用,用户可以要求点击表格列的头部使数据重排。这
就要求一个动态转换。
任何要求用户交互的转换,或产生交互文档的转换,同产生一个静态文档相比是一个相当
不同的工作。动态转换通常要求事件处理,它包括编程语言的使用。
因为脚本语言和D O M允许无X S L的转换,又因为文档对象模板( D O M,Document Object
M o d e l)可以被使用在浏览器上,通过与J a v a S c r i p t和其他语言(如J a v a,C + +,P e r l,Vi s u a l
B a s i c或P y t h o n)的绑定,所以有些人宁愿通过D O M和脚本(无X S L)来完成动态转换。在这一
章的后面,我们将看一下使用两种方法的例子,还有为什么你优先想使用其中一种方法的原因。
9.1.3 不同的浏览器
许多的We b开发者都有着这样的经历,开发并行站点或为不兼容的浏览器开发部分站点是一
件头痛的事。对于不兼容的浏览器来说存在着, X M L仅能够服务于We b浏览器,理解X M L可能是
另一回事了。然而,如果我们打算用X M L开发站点,则能够将它转换为不同的标记语言,所以可
以从核心的X M L内容中创建出不同版本的H T M L。让我们看一下它是如何工作的(参见图9 - 1)。
312使用XML 高级编程
下载
图9-1
在这里我们使用了三种不同的样式表来创建X M L内容的三种不同版本。I E 5的版本可以仍然
使用X M L,另两种可能是两种不同的解释语言。这个方法避免了给不同的浏览器将内容复制三
次。通过转换X M L数据,几个页面可能使用相同的X M L内容,可以提供给请求的浏览器按正确
的格式翻译好的页面。在这个例子中,我们简单地使用X S L样式表作为一个模板来演示数据如
何被显示。这些样式表作为下面数据的模板,所以可以使用这些样式表来转换几页的数据。
实际上,在需要显示在浏览器上的时候,将X M L转换成H T M L是非常流行的,因为W 3 C
关于XML的详细说明很少。
由于新型的浏览器在I n t e r n e t上的出现,这个方法开始变得日益重要。我们已经看到了数字
电视,游戏控制,多种的移动设备,从手持个人数字助理( P D A,personal digital assistants)到
移动电话,都提供I n t e r n e t处理。随着这些不同的客户端的增加,它们分享着浏览器市场,它们
将对为它们不同的需要而设计服务页面造成压力。可能包括,转换X M L为另一种标识语言,就
像无线标识语言( W M L,Wireless Markup Language),它是一种应用于移动电话和P D A中的。
所以,将内容转换为另一种版本的能力将变得逐渐普通起来。
9.2 XSL
可扩展样式语言( X S L,eXtensible Sytlesheet Language)是一种基于X M L的语言,它被设
计用来转换X M L文档到另一种X M L文档或转换X M L文档为可翻译对象。原始的X S L语言已经被
分割成三种不同的语言:
• 转换工具( X S LT)。
• 翻译工具( X S L F—可以包括X S LT的使用)。
• XML分级命令处理工具( X P a t h)。
X S L有它自己的根,不管是在层叠样式表( C S S)中还是在一种叫D S S S L(文档样式语义和
规格语言(D S S S L—读为' d e e s s e l '))的语言中。随着它的发展, X S L的样式表现变得更接近
于C S S和远离D S S S L。样式化在第1 3章中有描述。
你可能已经猜到,在这一章中我们所看到的关键点是X S L的转换能力。X S LT规范从1 9 9 9年
第9章转换XML使用313 下载
XSL
样式表
XSL
样式表
PCS
电话
11月1 6日起成为一种推荐的规范。由于它依赖于X P a t h规范,所以同一天X P a t h也成为推荐规范,
在文档转换领域作为一种可选方法。
X S LT
这一部分考查了我们如何使用X S LT来转换X M L文档,并且我们将看到X P a t h是如何应用到
X S LT中的。在X S LT规范的第一行中明确指出:“[ X S LT ]是一种转换X M L文档到其他X M L文档
的语言”。如同我们在前面看到的一样,出于某种原因,我们可能需要将X M L转换为另一种命令。
为了实现这一点,需要一个X S LT处理器。一旦看过X S LT处理器实际的工作之后,我们将讨论
两个常用的工具。
X S LT是用X M L编写的语言。这就意味着,一个用来转换X M L的X S LT样式的表,实际是一
个有着良好命令的X M L文档。所以,在这一章,我们将学习X S LT的语法和了解它能为我们做些
什么。
首先让我们先明确一个非常重要的一点:
XSLT引擎不用来操作文档,而是用于操作命令。
为了让一个X S LT引擎能够转换X M L文档,文档首先要被转换为一种命令( s t r u c t u r e )或一种
内部模型(internal model)。内部模型是一棵树。这种模型是独立于任何一种处理它的A P I的。在
S G M L世界,这种抽象的模型叫做一个树林( g r o v e )。因为, X M L是S G M L的子集,继承了S G M L
的一些基本的概念。所以,树林是一种简单的抽象树状命令,独立于任何一种处理这棵树入口
的A P I。例如, D O M就是W 3 C推荐使用于处理树的A P I。D O M是A P I,而树林则是抽象命令。所
以,一个树林可能有多于一种的A P I或拥有不同语言的不同的A P I。在整个章节中,在谈到抽象
树状命令时我们使用树林。
看一下下面的X M L:
程序清单9 - 3
可能被表示为一种抽象树的型式,如图9 - 2所示。
它并不关心于我们将如何看待或处理文件, < Ti t l e >、< A b s t r a c t >、< R e c S u b j C a t e g o r i e s >和
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:
XML高级编程上(106)