本文出自 “熔 岩” 博客,出处http://lavasoft.blog.51cto.com/62575/60517

对某一个元素做多次处理,那么选择<xsl:apply-template元素处理。
如果要每次对同一个元素处理输出不同的结果,那么就需要使用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>

 
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中显式效果:

xsl-mode属性用法的更多相关文章

  1. JS中Array数组的三大属性用法

    原文:JS中Array数组的三大属性用法 Array数组主要有3大属性,它们分别是length属性.prototype属性和constructor属性. JS操作Array数组的方法及属性 本文总结了 ...

  2. js原生之scrollTop、offsetHeight和offsetTop等属性用法详解

    scrollTop.offsetHeight和offsetTop等属性用法详解:标题中的几个相关相关属性在网页中有这大量的应用,尤其是在运动框架中,但是由于有些属性相互之间的概念比较混杂或者浏览器兼容 ...

  3. Android - include属性用法

    include属性用法 本文地址: http://blog.csdn.net/caroline_wendy Android的layout中, 能够使用include属性样式, 这样能够把不同的layo ...

  4. css文本属性用法总结

    稍稍总结了下css文本的一些属性用法,自己忘记的时候也可以用来查查,不用去查网站那么麻烦. 下面是部分总结,也希望对其他人有用 文本修饰 (1)text-decoration:  文本修饰(横线) 4 ...

  5. scrollTop、offsetHeight和offsetTop等属性用法详解--转转转

    scrollTop.offsetHeight和offsetTop等属性用法详解: 标题中的几个相关相关属性在网页中有这大量的应用,尤其是在运动框架中,但是由于有些属性相互之间的概念比较混杂或者浏览器兼 ...

  6. 跨平台移动开发 Xuijs超轻量级的框架Style CSS属性用法

    PhoneGap里面推荐使用的超轻量级的框架 Style CSS属性用法 设置css属性:setstyle 通过ID设置css属性 x$('#top1').setStyle('color', '#DB ...

  7. WPF Visibility属性用法

    WPF Visibility属性用法 Visible 元素在窗体中正常显示 Collaspsed 元素不显示,也不占用空间 Hidden 元素不显示,但是任然为它保留空间

  8. godot新手教程1[button信号使用]<godot节点信号对照及节点属性用法>

    button(按钮)节点信号对照: 1:pressed()      #按钮点击信号 #绑定按钮点击后触发信号 Pressed使用案例: func _on_”节点路径”_Button_pressed( ...

  9. HTML5 <a>标签的ping属性用法

    随着移动互联网用户井喷式的增长,web前端开发中的HTML5在近几年备受瞩目,越来越多的人从事html5开发相关工作.今天小编也来凑个热闹,和大家一起来谈谈HTML5中<a>标签的ping ...

随机推荐

  1. js构造函数的方法与原型prototype

    把方法写在构造函数内的情况我们简称为函数内方法,把方法写在prototype属性上的情况我们简称为prototype上的方法 函数内的方法: 使用函数内的方法我们可以访问到函数内部的私有变量,如果我们 ...

  2. Spring_的jar详细说明

    org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spring 2.5.6的时候需要a ...

  3. SVN发布网站

    1.问题 2.分析 如果机器先安装.NET framework,后安装IIS就会出现此问题,原因是.NET framework未注册. 3.注册.NET framework

  4. 如何在openresty里解析域名

    转:原文:http://hambut.com/2016/09/09/how-to-resolve-the-domain-name-in-openresty/?utm_source=tuicool&am ...

  5. 深入理解android:id以及@+id/name和@id/name的区别联系

    今天为了好好研究了下@+id/name和@id/name的区别以及联系,又翻了翻文档/guide/topics/resources/layout-resource.html中关于 android:id ...

  6. 解决 release-stripped.ap_' specified for property 'resourceFile' does not exist.

    设置buildTypes里的release的shrinkResources为false即可,如果是 release-stripped.ap_' specified for property 'reso ...

  7. 转:aliyun阿里云Maven仓库地址——加速你的maven构建

    maven仓库用过的人都知道,国内有多么的悲催.还好有比较好用的镜像可以使用,尽快记录下来.速度提升100倍. http://maven.aliyun.com/nexus/#view-reposito ...

  8. 常用vim插件的安装、使用和管理

      1.Ctags Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或者其他工具用来快速查找定位源代码中的符号,入变量名,函数名等.比如,tags文件就是Taglist和 ...

  9. (原创)RecyclerView结合xUtils2.6实现滚动时不加载item,xUtils2.6的源码分析与改造

    我们知道xUtils中的bitmapUtils与listview相配合可以实现滚动时暂停加载 只需要一句话: listview.addOnScrollListener(new PauseOnScrol ...

  10. mysql:ibdata1和mysql-bin log管理

    MySql ibdata1文件太大如何缩小 MySql innodb如果是共享表空间,ibdata1文件越来越大,达到了30多个G,对一些没用的表进行清空:truncate table xxx;然后o ...