四、xslt简介
了解xml的基本语法、schema的语法还远远不够,xml是对数据和数据结构的存储,而schema是对xml数据类型的定义。直到这
里还没有对xml数据的显示进行处理。虽然可以通过内置有xml解析器的浏览器直接对xml数据进行查看,但毕竟看到的只是以树状结构
显示的xml数据。
如果要把xml数据以漂亮的形式显示出来就需要xslt帮忙了。xslt可以把xml处理成html形式输出、wap形式输出,甚至也可以
是word文档的格式。其中最常用到的还是html的格式,下面讲解中用到的所有例子都以html的转换格式为例子。那就不说废话了,还
是先看一个xslt的例子吧!
这个xslt用到的一个xml文档,文档如下:
<?xml version = "1.0" encoding="gb2312"?>
<?xml:stylesheet type="text/xsl" href="s_xlt.xslt"?>
<resumes>
<resume>
<name>张立东</name>
<sex>男</sex>
<age>28</age>
<birthday>
<year>1974</year>
<month>8</month>
<day>10</day>
</birthday>
<address>北京市 海淀区</address>
</resume>
<resume>
<name>张三</name>
<sex>男</sex>
<age>50</age>
<birthday>
<year>1951</year>
<month>6</month>
<day>9</day>
</birthday>
<address>山西省</address>
</resume>
<resume>
<name>李四</name>
<sex>男</sex>
<age>29</age>
<birthday>
<year>1973</year>
<month>7</month>
<day>12</day>
</birthday>
<address>山东省</address>
</resume>
</resumes>
注:在上面的xml文档中多了下面的一句:
<?xml:stylesheet type="text/xsl" href="s_xlt.xslt"?>
这一句就是对xslt的引用,其中href中的内容是对具体xslt文档位置的指定,有关s_xlt.xslt中的内容就是下面要介绍的xsl
t例子的内容。有关如何对xml,xlst、schema的使用和测试,可以参考“一个应用了xml、schema和xlst的例子”部分。
对这个xml文档进行转换处理的xslt文档如下:
[1]<?xml version="1.0" encoding="gb2312"?>
[2]<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/tr/wd-xsl">
[3] <xsl:template match="/">
[4] <html>
[5] <head>
[6] <title>个人简历</title>
[7] </head>
[8] <body>
[9] <xsl:for-each select="/resumes/resume">
[10] <p>
[11] <table border="1" >
[12] <caption style="font-size: 150%; font-weight: bold">
[13] 个人简历
[14] </caption>
[15] <tr>
[16] <th>姓名</th><td><xsl:value-of select="name"/></td>
[17] <th>性别</th><td><xsl:value-of select="sex"/></td>
[18] <th>生日</th><td><xsl:value-of select="birthday/year"/>年
<xsl:value-of select="birthday/month"/>月<xsl:value-of select="birthday/day"/>日</td>
[19] </tr>
[20] <tr>
[21] <th>地址</th><td colspan="5"><xsl:value-of select="address"/></td>
[22] </tr>
[23] </table>
[24] </xsl:for-each>
[25] </body>
[26] </html>
[27] </xsl:template>
[28]</xsl:stylesheet>
[1]xml的序言,从第一条语句可以看出xslt也是符合xml语法的。
[2]xslt的名域。xsl:stylesheet是xslt的根元素,xsl是xslt的名域标识。所以都要在xslt的语句前面加上xsl:来表明是xslt
的语句。
[3] <xsl:template match="/"> 是xslt语言的匹配模式,主要是和引用它的xml文档的根进行匹配。其中/是代表xml文档根的含
义。 例如:个人简介中的name可以用/resumes/resume/name
的方式进行引用。(由于这里只是对xslt入门的一个初步介绍,对有关xml路径想详细了解的读者可以参考xml文档的xpath部分。)
[4]-[8]可以直接输出,这部分是符合html语法的信息结构,html文档的开始部分和head的定义。
[9] <xsl:for-each select="/resumes/resume">是xslt语言的选择模式,是循环的对所有的/resumes/resume元素和这个元素所
包含的子元素进行处理。
[10]-[15] 可以直接输出,符合html的语法结构。
[16] <th>姓名</th><td><xsl:value-of select="name"/></td>
在这一行中有html的语句和也有xslt的语句。其中<xsl:value-of select="name"/>也是属于选择模式的语句,可以直接把select选中
的元素内容提取处理,处理以后的结果应该是:<th>姓名</th><td>张立东</td>。