之前有谈过XML与CSS的搭配,可以让用户拥有多种数据显示样式。但这种搭配亦有不足之处,首先 编写者必须了解和掌握XML和CSS两种语法规则,无形中增加了编写者的知识成本;其次,编写者无法对数据进行查询性的显示,即通过XML与CSS的搭配只能将所有数据全部显示出来,无法实现只显示符合某种条件的数据。
为了降低编写者的知识成本,W3C组织又在XML文件基础之上定义了新的样式文件 -- XSLT(eXtended Stylesheet Language Transformation)。它遵循XML语法要求,编写者只要会写XML文件,就能够写出简单的XSLT文件。
<?
xml version=”1.0” encoding=”GB2312”
?>
< xsl:stylesheet version =”1.0” xmlns:xsl =”http:/www.3w.org/1999/XSL/Transform”>
<!-- Formatting commands for this document as a whole -- >
</ xsl:stylesheet >
< xsl:stylesheet version =”1.0” xmlns:xsl =”http:/www.3w.org/1999/XSL/Transform”>
<!-- Formatting commands for this document as a whole -- >
</ xsl:stylesheet >
XSLT样式文件使用模板(Template)系统来匹配XML文件中的内容,并规定如何处理它们。一旦某个模板匹配上了XML中的一个元素,就会将模板内容应用到该元素上。使用xsl:value-of可以查询出XML中指定结点的值,使用xsl:for-each,xsl:choose、xsl:when和xsl:otherwise,xsl:if元素可以对数据实现循环查询和条件条件。
XSLT样式文件中必须有一个与XML文档根元素匹配的模板。
<?
xml version="1.0" encoding="utf-8"
?>
< xsl:stylesheet version ="1.0" xmlns:xsl ="http://www.w3.org/1999/XSL/Transform" >
< xsl:template match ="/" >
< html >
< head >
< title > XSLT样式表文件使用举例 </ title >
</ head >
< body style ="text-align:center" >
< xsl:apply-templates />
</ body >
</ html >
</ xsl:template >
</ xsl:stylesheet >
< xsl:stylesheet version ="1.0" xmlns:xsl ="http://www.w3.org/1999/XSL/Transform" >
< xsl:template match ="/" >
< html >
< head >
< title > XSLT样式表文件使用举例 </ title >
</ head >
< body style ="text-align:center" >
< xsl:apply-templates />
</ body >
</ html >
</ xsl:template >
</ xsl:stylesheet >
每个模板以<xsl:template>标记开始,结束与</xsl:template>。其match属性说明该模板将会应用到XML中的哪个元素上去,“/”表示XML文档的根元素。
下面我们用一个具体的例子来说明。假设有一个用于存储用户在网上购物信息的XML文件,其内容如下:
<?
xml version="1.0" encoding="gb2312"
?>
<? xml-stylesheet type=”text/xsl” href=”Test.xsl” ?>
< shoppingcart >
< customer >
< name > 赵子龙 </ name >
< email >
<? xml-stylesheet type=”text/xsl” href=”Test.xsl” ?>
< shoppingcart >
< customer >
< name > 赵子龙 </ name >
< email >