|
4.3.1 XSL概述
在上一节中我们已经讲了两种样式单中的一种——层叠样式单CSS,本节要介绍的另一种是可扩展样式单语言 XSL(eXtensible Stylesheet Languge),它也是由W3C制定的。 XSL这个样式语言自提出以来争议颇多,前后经过了几番大的修改。XSL最近的一个草案于2000年3月提出,仍然有待进一步修改完善,因此还不能作为正式依据。 CSS是一种静态的样式描述格式,其本身不遵从XML的语法规范。而XSL不同,它是通过XML进行定义的,遵守XML的语法规则,是XML的一种具体应用。这也就是说,XSL本身就是一个XML文档,系统可以使用同一个XML解释器对XML文档及其相关的XSL文档进行解释处理。 XSL由两大部分组成:第一部分描述了如何将一个XML文档进行转换,转换为可浏览或可输出的格式;第二部分则定义了格式对象FO(fomatted object)。在输出时,首先根据XML文档构造源树,然后根据给定的XSL将这个源树转换为可以显示的结果树,这个过程称作树转换,最后再按照FO解释结果树,产生一个可以在屏幕上、纸上、语音设备或其它媒体中输出的结果,这个过程称作格式化。 到目前为止,W3C还未能出台一个得到多方认可的FO,但是描述树转换的这一部分协议却日趋成熟,已从XSL中分离出来,另取名为XSLT(XSL Transformations),其正式推荐标准于1999年11月16日问世,现在一般所说的XSL大都指的是XSLT。与XSLT一同推出的还有其配套标准XPath,这个标准用来描述如何识别、选择、匹配XML文档中的各个构成元件,包括元素、属性、文字内容等。 如前所述,XSLT主要的功能就是转换,它将一个没有形式表现的XML内容文档作为一个源树,将其转换为一个有样式信息的结果树。在XSLT文档中定义了与XML文档中各个逻辑成分相匹配的模板,以及匹配转换方式。值得一提的是,尽管制定XSLT规范的初衷只是利用它来进行XML文档与可格式化对象之间的转换,但它的巨大潜力却表现在它可以很好地描述XML文档向任何一个其它格式的文档作转换的方法,例如转换为另一个逻辑结构的XML文档、HTML文档、XHTML文档、VRML文档、SVG文档等等,不一而足。 使用XSL定义XML文档显示方式的基本思想是:通过定义转换模板,将XML源文档转换为带样式信息的可浏览文档。最终的可浏览文档可以是HTML格式、FO格式、或者其它面向显示方式描述的XML格式(如前面提到的SVG和SMIL),限于目前浏览器的支持能力,大多数情况下是转换为一个HTML文档进行显示。 在XML中声明XSL样式单的方法与声明CSS的方法大同小异:
至于具体的转换过程,既可以在服务器端进行,也可以在客户端进行。两者分别对应着不同的转换模式:
下面我们将着重介绍一些XSLT对XML文档的显示转换功能,并将XPath作为XSLT的基础予以介绍。对于FO,因为它的发展道路是路漫漫其修远兮,所以只用较小的篇幅介绍一下,使读者对其有一个概括性的了解。 |