1.
定义模板
(1)
什么是模板?
模板是
XSL
中一个非常重要的概念。
可以这么认为,
XSL
样式表是由一个一个的模板组成的。每个
XSL
样式表至少要包含一个模板。
模板的作用:
指定对
XML
文档中哪些元素进行格式化,以及具体如何进行格式化。
(2)
如何定义模板?
定义一个
XSL
模板的语法格式如下:
<
xsl:template
match
=”
pattern
“>
<!–
指定具体如何进行格式化
–>
</
xsl:template
>
其中:
1 “
<
xsl:template
>
”是模板定义的开始标记,“
</
xsl:template
>
”是模板定义的结束标记。
2
match
属性用于指定对
XML
文档中哪些元素进行格式化,取值由匹配模式
pattern
决定,如下表所示:
|
|
|
|
|
与根节点匹配,对根节点下所有子节点进行格式化。 |
|
|
与产品节点匹配,对产品节点下所有子节点进行格式化。 |
|
|
与产品信息节点下的产品子节点匹配,对产品节点下所有子节点进行格式化。 |
(3)
定义模板,要注意以下几点:
1
在模板中,可以直接使用合法的
HTML
标记。
2
模板定义不能嵌套,也即不能在一个模板内部,再定义一个模板。
3
模板必须是
XSL
文件中根元素
<
xsl:stylesheet
>
的直接子元素。
2.
应用模板
如何应用已经定义好的模板?
在
XSL
文件中定义好模板之后,可以应用这个模板,其语法格式如下:
<
xsl:apply-templates
[
select
=”
pattern
”
]
></
xsl:apply-templates
>
其中:
1 “
<
xsl:apply-templates
>
”是开始标记,“
<
/
xsl:apply-templates
>
”是结束标记。
2
select
属性是可选的。
因此,应用模板有两种形式,如下所示:
第一种:不带
select
属性的
<
xsl:apply-templates
/>
第二种:带
select
属性的
<
xsl:apply-templates
select
=”
pattern
“/>
当
XML
解析器遇到应用模板指令时,将会处理指定模板所匹配节点下所有子节点。
3. XSL
模板应用实例
(1)
创建一个描述产品信息的
XML
文档,如下所示:
<?xml version=”1.0″ encoding=”GB2312″?>
<
产品信息
>
<
产品
产品编号
=”
P001
“>
<
名称
>
牙膏
</
名称
>
<
价格
>
3.5
</
价格
>
<
数量
>
100
</
数量
>
</
产品
>
<
产品
产品编号
=”
P002
“>
<
名称
>
牙刷
</
名称
>
<
价格
>
1.5
</
价格
>
<
数量
>
100
</
数量
>
</
产品
>
<
产品
产品编号
=”
P003
“>
<
名称
>
毛巾
</
名称
>
<
价格
>
6.5
</
价格
>
<
数量
>
100
</
数量
>
</
产品
>
<
产品
产品编号
=”
P004
“>
<
名称
>
杯子
</
名称
>
<
价格
>
4.5
</
价格
>
<
数量
>
100
</
数量
>
</
产品
>
</
产品信息
>
(2)
创建一个
XSL
文件,用于格式化上述
XML
文档,如下所示:
<?xml version=”1.0″ encoding=”GB2312″?>
<
xsl:stylesheet
version
=”
1.0
”
xmlns:xsl
=”
http://www.w3.org/1999/XSL/Transform
“>
<
xsl:template
match
=”
/
“>
<
xsl:apply-templates
select
=”
产品信息
“/>
</
xsl:template
>
<
xsl:template
match
=”
产品信息
“>
<
html
>
<
body
>
<
table
border
=”
1px
”
align
=”
center
”
width
=”
400px
”
cellspacing
=”
0px
”
cellpadding
=”
5px
“>
<
tr
align
=”
center
“>
<
th
>
产品编号
</
th
>
<
th
>
产品名称
</
th
>
<
th
>
产品价格
</
th
>
<
th
>
产品数量
</
th
>
</
tr
>
<
xsl:apply-templates
select
=”
产品
“/>
</
table
>
</
body
>
</
html
>
</
xsl:template
>
<
xsl:template
match
=”
产品
“>
<
tr
align
=”
center
“>
<
td
><
xsl:value-of
select
=”
@
产品编号
“/></
td
>
<
td
><
xsl:value-of
select
=”
名称
“/></
td
>
<
td
><
xsl:value-of
select
=”
价格
“/></
td
>
<
td
><
xsl:value-of
select
=”
数量
“/></
td
>
</
tr
>
</
xsl:template
>
</
xsl:stylesheet
>
注意:在
XSL
文件中,必须要有一个根模板,往往第一个出现的模板就是根模板。
根模板是指匹配到根节点的模板,根模板的定义,如下所示:
<
xsl:template
match
=”
/
“>
<!–
指定具体如何进行格式化
–>
</
xsl:template
>
在
XSL
文件中,除了根模板之外,一般还会定义一些其它的模板,这些模板用于对
XML
文档中指定元素进行格式化。
XSL
处理器总是从根模板开始匹配
XML
文档,在处理的过程中再调用其它的模板。
(3)
将
XSL
文件与
XML
文档关联起来,如下所示:
<?xml version=”1.0″ encoding=”GB2312″?>
<?xml-stylesheet type=”text/xsl” href=”products.xsl”?>