XML简明教程(四)

四、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>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus