XSL模板

1. 定义模板

(1) 什么是模板?

模板是XSL中一个非常重要的概念。

 

可以这么认为,XSL样式表是由一个一个的模板组成的。每个XSL样式表至少要包含一个模板。

 

模板的作用:指定对XML文档中哪些元素进行格式化,以及具体如何进行格式化。

 

(2) 如何定义模板?

定义一个XSL模板的语法格式如下:

<xsl:template match="pattern">

    <!--指定具体如何进行格式化-->

</xsl:template>

 

其中:

1 “<xsl:template>”是模板定义的开始标记,“</xsl:template>”是模板定义的结束标记。

match属性用于指定对XML文档中哪些元素进行格式化,取值由匹配模式pattern决定,如下表所示:

 

pattern

示例

说明

/

<xsl:template match="/">

与根节点匹配,对根节点下所有子节点进行格式化。

element

<xsl:template match="产品">

与产品节点匹配,对产品节点下所有子节点进行格式化。

parent/child

<xsl:template match="产品信息/产品">

与产品信息节点下的产品子节点匹配,对产品节点下所有子节点进行格式化。

 

(3) 定义模板,要注意以下几点:

在模板中,可以直接使用合法的HTML标记。

模板定义不能嵌套,也即不能在一个模板内部,再定义一个模板。

模板必须是XSL文件中根元素<xsl:stylesheet>的直接子元素。

2. 应用模板

如何应用已经定义好的模板?

XSL文件中定义好模板之后,可以应用这个模板,其语法格式如下:

<xsl:apply-templates [select="pattern"]></xsl:apply-templates>

    

其中:

1 “<xsl:apply-templates>”是开始标记,“</xsl:apply-templates>”是结束标记。

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"?>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值