本文出自 「熔 巖」 博客,出處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中顯式效果: