1 XML和XSL简介
1.1 XML
XML是可扩展标记语言(EXtensible Markup Language)的缩写,它被设计用来传输和存储数据,并于1998年2月成为W3C的推荐标准。
图1-1 XML代码示例
上面是一小段XML代码,与HTML最大的区别在于,XML被设计为传输和存储数据,其焦点是数据的内容,并且XML的标签是自定义的;而HTML被设计用来显示数据,其焦点是数据的外观。XML是与描述、传输信息相关的,而HTML是与显示信息相关的(资料来源于W3School)。
1.2 XSL
XSL是扩展样式表语言(EXtensible Stylesheet Language)的缩写,是一种用于以可读格式呈现 XML 数据的语言。XSL包含XSLT、Xpath和XSL-FO三个部分:XSLT用于转换XML文档,Xpath用于选取XML元素和属性,XSL-FO用于格式化XML文档。
本文只涉及到XSL里的XSLT和Xpath。XSLT于1999年11月被确立为W3C标准,用于将XML文档转换为HTML、文本或者XML三种类型的文档(本文仅涉及到转换为HTML文档的情况),而Xpath是XSLT的主要元素之一。XSL-FO就一边寂寞去吧。
2 XML+XSLT结构的实现
用XML+XSLT结构输出页面可以理解为,使用XML存储数据,使用XSLT编写页面结构,感觉上像把HTML拆开了。XML文档在组织数据的同时,通过语句调用XSLT页面。在XSLT页面中,HTML语句编写基础结构,Xpath选取XML相应的数据节点,然后通过XSLT语句将这两者结合起来。
更为专业的描述是这样的:在转换的过程中,XSLT用Xpath来定义源文档中与一个或多个预先确定的模板相匹配的部分。当找到了一个匹配时,XSLT就将源文档中的匹配部分转换成结果文档;而源文档中不与任何一个模板匹配的部分最终在结果中保持不变。(摘自developerWorks)
2.1 结构示例
这里使用DNF的一个专题举个例子。此专题的访问地址是:http://dnf.qq.com/act/a20090710wcg/
这是一个赶工的专题,页面代码没太多的参考性,只是拿出来做个示例,并且由于专题比较简单,XSLT文档只用到了部分XSLT语句,属于简单应用。首页使用的是HTML,因为XML不在默认首页文件格式之列,因此只有二级页采用了XML+XSLT结构。对于其中“代表队介绍”这个二级页面:
XML文档:http://dnf.qq.com/act/a20090710wcg/players.xml
XSLT文档:http://dnf.qq.com/act/a20090710wcg/xslt/player.xsl,http://dnf.qq.com/act/a20090710wcg/xslt/commens.xsl
XML和XSLT是树状结构的,在浏览器中可以看到。XSLT文档中,以”<xsl:”开头的就是XSLT语句,”select”属性里的内容则是Xpath表达式