对某一个元素做多次处理,那么选择<xsl:apply-template元素处理。
如果要每次对同一个元素处理输出不同的结果,那么就需要使用mode属性。
<xsl:template>和<xsl:apply-templates>都有一个mode属性,只有在这两个元素里面同时设定了mode属性,并且属性值相同,那么模板规则才会匹配。
如果要每次对同一个元素处理输出不同的结果,那么就需要使用mode属性。
<xsl:template>和<xsl:apply-templates>都有一个mode属性,只有在这两个元素里面同时设定了mode属性,并且属性值相同,那么模板规则才会匹配。
例如:
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 >
<? 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 >
< 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>
< 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中显式效果:
看到了吧,匹配了两次模板。
本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/60517,如需转载请自行联系原作者