本文出自 “熔 岩” 博客,出处http://lavasoft.blog.51cto.com/62575/60517app
对某一个元素作屡次处理,那么选择<xsl:apply-template元素处理。
若是要每次对同一个元素处理输出不一样的结果,那么就须要使用mode属性。
<xsl:template>和<xsl:apply-templates>都有一个mode属性,只有在这两个元素里面同时设定了mode属性,而且属性值相同,那么模板规则才会匹配。spa
例如:
employees.xml
<?
xml
version
="1.0"
encoding
="GB2312"
?>
<?
xml-stylesheet
type
="text/xsl"
href
="employees.xsl"
?>
<!--
这是公司雇员的信息-->
<
employees
>
<
employee
sn
="E-200402100001"
>
<
name
>zhangsan
</
name
>
<
age
>25
</
age
>
<!--
月薪小于等于2000元的雇员工资,以现金方式发放-->
<
monthly_pay
mode
="cash"
>
1200.00
</
monthly_pay
>
</
employee
>
<
employee
sn
="E-200402100006"
>
<
name
>lisi
</
name
>
<
age
>28
</
age
>
<
monthly_pay
mode
="cash"
>
1600.00
</
monthly_pay
>
</
employee
>
<
employee
sn
="E-200503220001"
>
<
name
>wangwu
</
name
>
<
age
>30
</
age
>
<!--
月薪高于2000元的雇员工资,以信用卡转账的方式发放-->
<
monthly_pay
mode
="credit_card"
>
3500.00
</
monthly_pay
>
</
employee
>
</
employees
>
employees.xsl
<?
xml
version
="1.0"
?>
<
xsl:stylesheet
version
="1.0"
xmlns:xsl
="http://www.w3.org/1999/XSL/Transform"
>
<
xsl:template
match
="/"
>
<
table
border
="1"
>
<
xsl:apply-templates
select
="employees/employee"
mode
="table"
/>
</
table
>
<
xsl:apply-templates
select
="employees/employee"
mode
="list"
/>
</
xsl:template
>
<
xsl:template
match
="employee"
mode
="table"
>
<
tr
>
<
td
>
<
xsl:value-of
select
="name"
/>
</
td
>
<
td
>
<
xsl:value-of
select
="age"
/>
</
td
>
<
td
>
<
xsl:value-of
select
="monthly_pay"
/>
</
td
>
</
tr
>
</
xsl:template
>
<
xsl:template
match
="employee"
mode
="list"
>
<
ul
>
<
li
>
<
xsl:value-of
select
="name"
/>
</
li
>
<
li
>
<
xsl:value-of
select
="age"
/>
</
li
>
<
li
>
<
xsl:value-of
select
="monthly_pay"
/>
</
li
>
</
ul
>
</
xsl:template
>
</
xsl:stylesheet
>
输出的HTML文件:
<
table
border
="1"
>
<
tr
>
<
td
>zhangsan
</td>
<
td
>25
</td>
<
td
>1200.00
</td>
</tr>
<
tr
>
<
td
>lisi
</td>
<
td
>28
</td>
<
td
>1600.00
</td>
</tr>
<
tr
>
<
td
>wangwu
</td>
<
td
>30
</td>
<
td
>3500.00
</td>
</tr>
</table>
<
ul
>
<
li
>zhangsan
</li>
<
li
>25
</li>
<
li
>1200.00
</li>
</ul>
<
ul
>
<
li
>lisi
</li>
<
li
>28
</li>
<
li
>1600.00
</li>
</ul>
<
ul
>
<
li
>wangwu
</li>
<
li
>30
</li>
<
li
>3500.00
</li>
</ul>
IE中显式效果: