使用 XSLT 将 XML 转换为 XHTML

发布于 2022-09-07 07:10:28 字数 8225 浏览 20 评论 5

1. 什么是XSLT

大家可能听说过XSL(eXtensible Stylesheet Language),XSL和我们这里说的XSLT从狭义上理解是一样的,而按照W3C的标准,XSLT的说法更严格些,因此我们在文章中统一使用 XSLT的称法。XSLT的英文标准名称为eXtensible Stylesheet Language Transformation。

根据W3C的规范说明书(http://www.w3.org/TR/xslt),最早设计XSLT的用意是帮助XML文档(document)转换为其它文档。但是随着发展,XSLT已不仅仅用于将XML转换为HTML或其它文本格式,更全面的定义应该是: XSLT是一种用来转换XML文档结构的语言。

2. 为什么要用XSLT

我们已经知道,XML是一种电脑程序间交换原始数据的简单而标准的方法。它的成功并不在于它容易被人们书写和阅读,更重要的是,它从根本上解决了应用系统间的信息交换。因为XML满足了两个基本的需求:

(1).将数据和表达形式分离。就象天气预报的信息可以显示在不同的设备上,电视,手机或者其它。
(2).在不同的应用之间传输数据。电子商务数据交换的与日俱增使得这种需求越来越紧迫。
为了使数据便于人们的阅读理解,我们需要将信息显示出来或者打印出来,例如将数据变成一个HTML文件,一个PDF文件,甚至是一段声音;同样,为了使数据适合不同的应用程序,我们必须有能够将一种数据格式转换为另一种数据格式,比如需求格式可能是一个文本文件,一个SQL语句,一个HTTP信息,一定顺序的数据调用等。而XSLT就是我们用来实现这种转换功能的语言。将XML转换为HTML,是目前XSLT最主要的功能。

3.如何使用XSLT

我们首先需要创建一个xsl文档并在文档顶端声明XSLT命名空间,根据 W3C 的 XSLT 标准,声明 XSL 样式表的正确方法是:<xsl:stylesheet version="1.0" xmlnssl="http://www.w3.org/1999/XSL/Transform">

或者:<xsl:transform version="1.0" xmlnssl="http://www.w3.org/1999/XSL/Transform">

这两种声明方式意义完全相同,不知道为什么W3C会使用两种方式声明。完整的xsl文档内容如下:cdcatalog.xsl 1 <?xml version="1.0" encoding="UTF-8"?>
2
<xsl:stylesheet version="1.0" xmlnssl="http://www.w3.org/1999/XSL/Transform">
3
<xsl:template match="/">
4
<html>
5
<body>
6
<h2>My CD Collection</h2>
7
<table border="1">
8
<tr bgcolor="#9acd32">
9
<th align="left">Title</th>
10
<th align="left">Artist</th>
11
<th align="left">Price</th>
12
</tr>
13
<xsl:for-each select="catalog/cd">
14
<tr>
15
<td>
16
<xsl:value-of select="title"/>
17
</td>
18
<td>
19
<xsl:value-of select="artist"/>
20
</td>
21
<td>
22
<xsl:value-of select="price"/>
23
</td>
24
</tr>
25
</xsl:for-each>
26
</table>
27
</body>
28
</html>
29
</xsl:template>
30
</xsl:stylesheet>
31

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

帝王念 2022-09-11 22:04:58

说这么多,还不如我直接用html。
w3c 有的时候就是喜欢搞复杂的东西,比如说:xhtml 2.0

烟酒忠诚 2022-09-10 09:26:46

最后一步,为了使用xsl样式表把xml转换为XHTML,我们将xsl样式表引用添加到xml文档中: 1 <?xml version="1.0" encoding="UTF-8"?>
2 <?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
3
<catalog>
4
<cd>
5
<title>Empire Burlesque</title>
6
<artist>Bob Dylan</artist>
7
<country>USA</country>
8
<company>Columbia</company>
9
<price>10.90</price>
10
<year>1985</year>
11
</cd>
12     ...
13
</catalog>

好了,现在我们用浏览器打开cdcatalog.xml文档,可以发现xml格式的数据变为表格了,就像我们用html语言编写的也没一样,很神奇吧!

唐婉 2022-09-09 14:58:43

151
<company>Siren</company>
152
<price>7.90</price>
153
<year>1987</year>
154
</cd>
155
<cd>
156
<title>Private Dancer</title>
157
<artist>Tina Turner</artist>
158
<country>UK</country>
159
<company>Capitol</company>
160
<price>8.90</price>
161
<year>1983</year>
162
</cd>
163
<cd>
164
<title>Midt om natten</title>
165
<artist>Kim Larsen</artist>
166
<country>EU</country>
167
<company>Medley</company>
168
<price>7.80</price>
169
<year>1983</year>
170
</cd>
171
<cd>
172
<title>Pavarotti Gala Concert</title>
173
<artist>Luciano Pavarotti</artist>
174
<country>UK</country>
175
<company>DECCA</company>
176
<price>9.90</price>
177
<year>1991</year>
178
</cd>
179
<cd>
180
<title>The dock of the bay</title>
181
<artist>Otis Redding</artist>
182
<country>USA</country>
183
<company>Atlantic</company>
184
<price>7.90</price>
185
<year>1987</year>
186
</cd>
187
<cd>
188
<title>Picture book</title>
189
<artist>Simply Red</artist>
190
<country>EU</country>
191
<company>Elektra</company>
192
<price>7.20</price>
193
<year>1985</year>
194
</cd>
195
<cd>
196
<title>Red</title>
197
<artist>The Communards</artist>
198
<country>UK</country>
199
<company>London</company>
200
<price>7.80</price>
201
<year>1987</year>
202
</cd>
203
<cd>
204
<title>Unchain my heart</title>
205
<artist>Joe Cocker</artist>
206
<country>USA</country>
207
<company>EMI</company>
208
<price>8.20</price>
209
<year>1987</year>
210
</cd>
211
</catalog>

独﹏钓一江月 2022-09-08 18:41:34

101
<artist>Kenny Rogers</artist>
102
<country>UK</country>
103
<company>Mucik Master</company>
104
<price>8.70</price>
105
<year>1995</year>
106
</cd>
107
<cd>
108
<title>Big Willie style</title>
109
<artist>Will Smith</artist>
110
<country>USA</country>
111
<company>Columbia</company>
112
<price>9.90</price>
113
<year>1997</year>
114
</cd>
115
<cd>
116
<title>Tupelo Honey</title>
117
<artist>Van Morrison</artist>
118
<country>UK</country>
119
<company>Polydor</company>
120
<price>8.20</price>
121
<year>1971</year>
122
</cd>
123
<cd>
124
<title>Soulsville</title>
125
<artist>Jorn Hoel</artist>
126
<country>Norway</country>
127
<company>WEA</company>
128
<price>7.90</price>
129
<year>1996</year>
130
</cd>
131
<cd>
132
<title>The very best of</title>
133
<artist>Cat Stevens</artist>
134
<country>UK</country>
135
<company>Island</company>
136
<price>8.90</price>
137
<year>1990</year>
138
</cd>
139
<cd>
140
<title>Stop</title>
141
<artist>Sam Brown</artist>
142
<country>UK</country>
143
<company>A and M</company>
144
<price>8.90</price>
145
<year>1988</year>
146
</cd>
147
<cd>
148
<title>Bridge of Spies</title>
149
<artist>T`Pau</artist>
150
<country>UK</country>

骷髅 2022-09-07 15:27:45

接下来,我们需要再创建一个保存数据的xml文档:cdcatalog.xml   1 <?xml version="1.0" encoding="UTF-8"?>
  2
<catalog>
  3
<cd>
  4
<title>Empire Burlesque</title>
  5
<artist>Bob Dylan</artist>
  6
<country>USA</country>
  7
<company>Columbia</company>
  8
<price>10.90</price>
  9
<year>1985</year>
10
</cd>
11
<cd>
12
<title>Hide your heart</title>
13
<artist>Bonnie Tyler</artist>
14
<country>UK</country>
15
<company>CBS Records</company>
16
<price>9.90</price>
17
<year>1988</year>
18
</cd>
19
<cd>
20
<title>Greatest Hits</title>
21
<artist>Dolly Parton</artist>
22
<country>USA</country>
23
<company>RCA</company>
24
<price>9.90</price>
25
<year>1982</year>
26
</cd>
27
<cd>
28
<title>Still got the blues</title>
29
<artist>Gary Moore</artist>
30
<country>UK</country>
31
<company>Virgin records</company>
32
<price>10.20</price>
33
<year>1990</year>
34
</cd>
35
<cd>
36
<title>Eros</title>
37
<artist>Eros Ramazzotti</artist>
38
<country>EU</country>
39
<company>BMG</company>
40
<price>9.90</price>
41
<year>1997</year>
42
</cd>
43
<cd>
44
<title>One night only</title>
45
<artist>Bee Gees</artist>
46
<country>UK</country>
47
<company>Polydor</company>
48
<price>10.90</price>
49
<year>1998</year>
50
</cd>
51
<cd>
52
<title>Sylvias Mother</title>
53
<artist>Dr.Hook</artist>
54
<country>UK</country>
55
<company>CBS</company>
56
<price>8.10</price>
57
<year>1973</year>
58
</cd>
59
<cd>
60
<title>Maggie May</title>
61
<artist>Rod Stewart</artist>
62
<country>UK</country>
63
<company>Pickwick</company>
64
<price>8.50</price>
65
<year>1990</year>
66
</cd>
67
<cd>
68
<title>Romanza</title>
69
<artist>Andrea Bocelli</artist>
70
<country>EU</country>
71
<company>Polydor</company>
72
<price>10.80</price>
73
<year>1996</year>
74
</cd>
75
<cd>
76
<title>When a man loves a woman</title>
77
<artist>Percy Sledge</artist>
78
<country>USA</country>
79
<company>Atlantic</company>
80
<price>8.70</price>
81
<year>1987</year>
82
</cd>
83
<cd>
84
<title>Black angel</title>
85
<artist>Savage Rose</artist>
86
<country>EU</country>
87
<company>Mega</company>
88
<price>10.90</price>
89
<year>1995</year>
90
</cd>
91
<cd>
92
<title>1999 Grammy Nominees</title>
93
<artist>Many</artist>
94
<country>USA</country>
95
<company>Grammy</company>
96
<price>10.20</price>
97
<year>1999</year>
98
</cd>
99
<cd>
100
<title>For the good times</title>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文