XSLT初步

ZDNet软件频道 时间:2002-03-19 作者:ZDNET CHINA 特稿 |  我要评论()
本文关键词:XML XSLT
什么是XSLT?他是用来做什么的?本篇文章将会告诉您答案。

XSL也就是所谓的扩展风格表单语言(Extensible Stylesheet Language)由3种语言组成。这三种语言负责把XML文档转换为其他格式。XML FO (XSL格式化对象:XSL Formatting Objects)说明可视的文档格式化,而Xpath则访问XML文档的特定部分。但是XSLT(XSL Transformations)才是把某一XML文档转换为其他格式的实际语言。

最简单的应用情况首先涉及到两个文档:包含原始数据的XML文档和用来转换该文档的XSLT风格表单。XSLT处理器把XSLT风格表单的规则应用到XML文档从而新建出XHTML、WML、SVG或者几乎其他任何XML格式的第3个文档。

 

多个XSLT风格表单可以采用多种格式来表达某一文档。单一的风格表单还可以把某一数据类型的多种实例转换为标准的报告格式,你只需要修改风格表单就可以改变这些报告模式。而XSLT则可以把数据的多种实例转换为多种格式而不仅仅局限于报告格式:由此可见,XSLT是一种把某一系统的数据格式转换为另一系统(比如B2B交易)数据格式的强大工具。

XSLT从头学起

认真学习使用XSLT的高效方法会很费时间的。在学习内容中的某些方面很具有直觉性,而其他一些方便则可能会叫人很费解。不过,一旦你熟悉了XSLT 和 Xpath,你就可以相当快地在实际环境下熟练运用XSL了。

一开始你得需要一个XSLT处理器。随着各类技术的迅猛发展,你所采用的技术工具可能会让你所进行的项目要么成功要么毁灭。目前桌面XSLT原型工具并不多,因为这类工具大多数都针对全规模的产品系统。你必须仔细考虑使用的工具如何支持XSLT规范。

最近推出的浏览器,比如Internet Explorer 5.5、Netscape 6.1和Mozilla等,它们都支持XSLT处理功能。它们也许就是这方面最简单的使用工具了,可是,在其支持规范方面却相当欠缺。还有,浏览器并没有支持真正的开发工具,所以在调试代码的时候毫无用处。XSLT格式转化通常在服务器上完成,所以浏览器只能对那些包含了指向风格表单链接的XML文件才有效。

Instant Saxon 是一款用于Windows系统的命令行式的、服务器风格的XSLT简单处理器。它实现了基本的文件输出和错误信息。相比浏览器能提供更稳固的XSLT 支持。虽然这一工具还不是完全意义上的开发环境,但Instant Saxon作为实验用工具还是绰绰有余了。

XML Spy是一套完整的XML IDE,该软件可以从网络下载评估版。它采用了Instant Saxon作为其XSLT处理器。这一产品非常适合那些在应用环境下开发XML的工程人员,不过要掌握这套工具还真得需要点时间。

假如以上这些工具能为你所用,或者你希望自己动手建立一套完整的应用环境,我们在本文的末尾会为你列出一些基于服务器的XSLT处理器。

测试示例

下面的例子假设XSL处理工具和XML、XSL文件都在一个目录下。在这个例子中,我们用一个XML文档表示快餐定货单,下面我们需要把这个文档转换为可读的HTML格式。

现在请把该XML文档拷贝并且粘贴到某个文本编辑器内,然后把它另存为order.XML文件。同样的,把相应的XSL 文档拷贝为名为order.xsl的文件。这个 XML 文件链接到该 XSL风格表单,这样你就可以在合适的浏览器中查看该XML 文件,或者用XML Spy 对其进行XSL Transform 处理。接着用Instant Saxon打开一个MS-DOS命令行窗口,进到文件所在目录,键入saxon.exe order.XML order.xsl > order.html命令。

以上命令将把转换后的HTML 结果输出为一个名为 order.html的文件,这样你就可以通过自己的浏览器查看该文件了。

以上例子的结果如下:HTML页面的标题显示"Mike的定单(定单号734)",内容是他订购食品的列表,包括价格等。 XSLT 处理器处理了包含数据的 XML文件并把它转换为HTML输出结果。XSLT风格表单则定义了描述XML数据的 HTML标签定位,方法是采用组成XSLT语言的处理指令。

虽然 XSLT 处理器通常接受命令采用相应的风格表单处理,不过,XML文档可以指示自己默认的XSLT风格表单,方法是在文档中包含以下行:

<?XML-stylesheet type="text/xsl" href="my.xsl"?>

其中my.xsl是指向风格表单的URL。以上的代码对基于浏览器的格式转换是基本的要求。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134