四、xslt简介
了解XML的基本语法、Schema的语法还远远不够,XML是对数据和数据结构的存储,而Schema是对XML数据类型的定义。直到这
里还没有对XML数据的显示进行处理。虽然可以通过内置有XML解析器的浏览器直接对XML数据进行查看,但毕竟看到的只是以树状结构
显示的XML数据。
如果要把XML数据以漂亮的形式显示出来就需要XSLT帮忙了。XSLT可以把XML处理成HTML形式输出、WAP形式输出,甚至也可以
是Word文档的格式。其中最常用到的还是HTML的格式,下面讲解中用到的所有例子都以HTML的转换格式为例子。那就不说废话了,还
是先看一个XSLT的例子吧!
这个XSLT用到的一个XML文档,文档如下:
1<resumes>
2<resume>
3<name>张立东</name>
4<sex>男</sex>
5<age>28</age>
6<birthday>
7<year>1974</year>
8<month>8</month>
9<day>10</day>
10</birthday>
11<address>北京市 海淀区</address>
12</resume>
13<resume>
14<name>张三</name>
15<sex>男</sex>
16<age>50</age>
17<birthday>
18<year>1951</year>
19<month>6</month>
20<day>9</day>
21</birthday>
22<address>山西省</address>
23</resume>
24<resume>
25<name>李四</name>
26<sex>男</sex>
27<age>29</age>
28<birthday>
29<year>1973</year>
30<month>7</month>
31<day>12</day>
32</birthday>
33<address>山东省</address>
34</resume>
35</resumes>
注:在上面的XML文档中多了下面的一句:
这一句就是对XSLT的引用,其中href中的内容是对具体XSLT文档位置的指定,有关s_xlt.xslt中的内容就是下面要介绍的XSL
T例子的内容。有关如何对XML,XLST、Schema的使用和测试,可以参考“一个应用了xml、schema和xlst的例子”部分。
对这个XML文档进行转换处理的XSLT文档如下:
[1]
[2]
1<xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/TR/WD-xsl">
2
3[3] <xsl:template match="/">
4
5[4] <html>
6
7[5] <head>
8
9[6] <title>个人简历</title>
10
11[7] </head>
12
13[8] <body>
14
15[9] <xsl:for-each select="/resumes/resume">
16
17[10] <p>
18
19[11] <table border="1">
20
21[12] <caption style="font-size: 150%; font-weight: bold">
22
23[13] 个人简历
24
25[14] </caption>
26
27[15] <tr>
28
29[16] <th>姓名</th><td><xsl: -of="" _value_="" select="name"></xsl:></td>
30
31[17] <th>性别</th><td><xsl: -of="" _value_="" select="sex"></xsl:></td>
32
33[18] <th>生日</th><td><xsl: -of="" _value_="" select="birthday/year"></xsl:>年
34
35<xsl: -of="" _value_="" select="birthday/month"></xsl:>月<xsl: -of="" _value_="" select="birthday/day"></xsl:>日</td>
36
37[19] </tr>
38
39[20] <tr>
40
41[21] <th>地址</th><td colspan="5"><xsl: -of="" _value_="" select="address"></xsl:></td>
42
43[22] </tr>
44
45[23] </table>
46
47[24] </p></xsl:for-each>
48
49[25] </body>
50
51[26] </html>
52
53[27] </xsl:template>
54
55[28]</xsl:stylesheet>
[1]XML的序言,从第一条语句可以看出XSLT也是符合XML语法的。
[2]XSLT的名域。Xsl:stylesheet是XSLT的根元素,xsl是XSLT的名域标识。所以都要在XSLT的语句前面加上xsl:来表明是XSLT
的语句。
[3]
1<xsl:template match="/"> 是XSLT语言的匹配模式,主要是和引用它的XML文档的根进行匹配。其中/是代表XML文档根的含
2
3义。 例如:个人简介中的name可以用/resumes/resume/name
4
5的方式进行引用。(由于这里只是对XSLT入门的一个初步介绍,对有关XML路径想详细了解的读者可以参考XML文档的XPATH部分。)
6
7[4]-[8]可以直接输出,这部分是符合HTML语法的信息结构,HTML文档的开始部分和head的定义。
8
9[9] <xsl:for-each select="/resumes/resume">是XSLT语言的选择模式,是循环的对所有的/resumes/resume元素和这个元素所
10
11包含的子元素进行处理。
12
13[10]-[15] 可以直接输出,符合HTML的语法结构。
14
15[16] <th>姓名</th><td><xsl: -of="" _value_="" select="name"></xsl:></td>
16
17在这一行中有HTML的语句和也有XSLT的语句。其中<xsl: -of="" _value_="" select="name"></xsl:>也是属于选择模式的语句,可以直接把select选中
18
19的元素内容提取处理,处理以后的结果应该是:<th>姓名</th><td>张立东</td>。
20
21[18]-[23]分别是对其他部分信息的显示处理,其中也包含了部分的HTML语句。
22
23[24] <xsl:for-each> 语句的结束部分。
24
25[25]-[26]HTML语句。
26
27[27] <xsl:template> 语句的结束部分。也就是对整个XML文档处理的结束。因为每个XML文档只有一个根而这条语句是对根的部
28
29分处理,所以是对整个XML文档处理的结束。
30
31[28] XSLT文档的结束。
32
33经上面对这个简单例子的介绍,大家对XSLT对XML文档的处理可能已经有了一个基本的了解,可以简单的通过XSLT对XML进行
34
35处理啦。在结束这个部分之前对XSLT的语法做一个简单的小结:
36
37可以大致的把模式语言分为三种:
38
39选择模式
40
41<xsl:for-each>、<xsl: -of="" _value_="">,和 <xsl:apply-templates>
42
43测试模式
44
45<xsl:if> 和<xsl:when>
46
47匹配模式
48
49<xsl:template>
50
51选择模式语句将数据从XML中提取出来,这是一种简单获得数据的方法。这几个标记都有一个select属性,选取XML中特定结
52
53点名的数据。
54
55测试模式是对数据的一个判断,然后根据判断和匹配的结果进行处理。有些和程序语言中的判断语句和多判断语句形似。
56
57匹配模式是一个可以单独列出来的XSLT语句片断,可以完成对一个特定部分的XSLT处理。有些和程序设计中的子程序相似。</xsl:template></xsl:when></xsl:if></xsl:apply-templates></xsl:></xsl:for-each></xsl:template></xsl:for-each></xsl:for-each></xsl:template>