模板规则通过使用模式来匹配文档树的节点。模式指定一组条件,用于选择要处理的节点。
 
模式匹配的语法不光可以在<xsl:template>元素的match属性中使用,还可以在<xsl:apply- templates>、<xsl:value-of>、<xsl:for-each>、<xsl:copy- of>、<xsl:sort>、<xsl:variable>和<xsl:param>元素的select属 性中使用。
 
下面列出常用的模式匹配的用法:
 
1、匹配根节点
例如:<xsl:template match="/">,表示匹配根节点。
 
2、匹配元素节点
例如:<xsl:template match="employees">,表示匹配employees元素节点。
 
3、使用通配符
例如:<xsl:template match="*">,表示匹配任何元素。
 
4、使用@匹配属性
用@加上数姓名,可以用于匹配属性节点。
例如:<xsl:template match="@mode">,表示匹配mode属性节点。不过要注意的是,XSLT处理器在遍历节点的树状结构时,并不处理属性节点。如果要让处 理器处理属性节点,必须显式调用<xsl:apply-templates>元素,并使用select属性选择属性节点。
 
还可以将@与星号(*)一起使用,例如:<xsl:template match="@*">,表示匹配任意的属性节点。
 
5、使用斜杠(/)匹配子节点
例如:<xsl:template match="employees/employee">,表示匹配employees元素节点下的任意的employee子节点。
 
6、使用双斜杠(//)匹配后代节点
有时候,希望对某一类元素节点进行处理,而不管该节点在树状结构中所处的位置,就可以使用双斜杠(//)来匹配节点。例 如:<xsl:template match="//name">,表示匹配根节点下任意的name元素节点,而不管该节点所处的位置。例如:<xsl:template match="employees//name">,表示匹配employees元素节点下的任意的name元素节点。
 
7、使用或操作符(|)
使用或操作符(|)来可选择地匹配多个节点。例如:<xsl:template match="name|age">,表示匹配任意的name或age元素节点。
例如:<xsl:template match="employee/name!monthly_pay/@mode">,表示匹配employee元素节点下的任意name子节点,或monthly_pay元素节点的mode属性节点。
 
8、使用[]操作符
可以在[]中指定布尔表达式,用于在节点集中更精确地匹配某一个节点。
例如:如果只想匹配第一个employee元素,可以这样写:<xsl:template match="employee[1]">,表示匹配第一个employee子元素节点。这和上面的写法是等价的:
<xsl:template match="employee[position()=1]">
position()是一个函数调用,返回节点在上下文中的当前位置,然后判断该位置是否等于1.
 
9、使用node()匹配节点
node()表示匹配除属性节点和根节点之外的其他任何节点。
例如:<xsl:template match="node()">.
 
10、使用text()匹配文本节点
text()表示匹配任意的文本节点,例如:<xsl:template match="text()">。
 
11、使用processing-instruction()匹配处理指令
processing-instruction()表示匹配任的处理指令节点。
例如:<xsl:tempate match="processing-instruction()">。processing-instruction()还可以带一个参数,用于指定处理指令目标的名字,这样,只有和这个名字相同的处理指令才能被匹配。
 
12、使用comment()匹配注释
comment()表示匹配任意的注释节点,例如:<xsl:template match="comment()">。
 
13、使用id()进行匹配
一个ID类型的属性唯一标识了XML文档中的一个元素。
例如:<xsl:template match="id('E-2001320001')">表示匹配拥有ID类型属性并且其值等于E-2001320001的元素。要注意的是,要让 这种方式能够工作,必须在源XML文档的DTD中声明ID类型的属性,可以是内部的或外部的DTD,如果源文档那个没有DTD,则id()函数就不能正常 工作。
 
本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/60446

XSL学习笔记4 XSLT模式匹配的语法的更多相关文章

  1. 【Vue学习笔记】—— vue的基础语法 { }

    学习笔记 作者:oMing vue v-on: 简称 @ <div id='app'> <button v-on:click='Show1'> </button> ...

  2. [core Java学习笔记][第一二三章基本语法]

    基本语法 1 Java 简单的类型 1.1 一些常量 正无穷大 Double.POSITVE_INFINITY 负无穷大 Double.NEGATIVE_INFINITY 不存在 Double.NaN ...

  3. Pytorch学习笔记(一)---- 基础语法

    书上内容太多太杂,看完容易忘记,特此记录方便日后查看,所有基础语法以代码形式呈现,代码和注释均来源与书本和案例的整理. # -*- coding: utf-8 -*- # All codes and ...

  4. linux-0.11 内核源码学习笔记一(嵌入式汇编语法及使用)

    linux内核源码虽然是用C写的,不过其中有很多用嵌入式汇编直接操作底层硬件的“宏函数”,要想顺利的理解内核理论和具体实现逻辑,学会看嵌入式汇编是必修课,下面内容是学习过程中的笔记:当做回顾时的参考. ...

  5. Python学习笔记:与Java 基础语法对比

    闲着无聊学习下Python 的语法.由于我目前主要编程语言还是Java ,所以针对Python 的学习我主要是通过与Java 进行对比.我使用的是Python3,因此语法上也会遵循Python3 的规 ...

  6. [寒假学习笔记](一)Markdown语法学习

    Markdown 学习 在博客园上使用markdown编辑,记录学习进度,以来日可以复习 前期准备 1. 安装markdownpad2 官网直接找下载安装,遇到bug他会自动提示信息,跟着提示去安装一 ...

  7. Java 学习笔记 ------第三章 基础语法

    本章学习目标: 认识类型与变量 学习运算符的基本使用 了解类型转换细节 运用基本流程语法 一.类型(基本类型) 所谓基本类型,就是在使用时,得考虑一下数据用多少内存长度存比较经济,利用程序语法告诉JV ...

  8. jQuery 学习笔记(一)jQuery 语法

    jQuery 是一个 JavaScript 库,极大地简化了 JavaScript 编程,很容易学习 添加 jQuery 库 <head> <script type="te ...

  9. ML学习笔记之LATEX数学公式基本语法

    作者:@houkai本文为作者原创,转载请注明出处:https://www.cnblogs.com/houkai/p/3399646.html 0x00 概述 TEX 是Donald E. Knuth ...

随机推荐

  1. Java线程的概念

    1.      计算机系统 使用高速缓存来作为内存与处理器之间的缓冲,将运算需要用到的数据复制到缓存中,让计算能快速进行:当运算结束后再从缓存同步回内存之中,这样处理器就无需等待缓慢的内存读写了. 缓 ...

  2. D3.js学习(一)

    从今天开始我将和大家一起学习D3.js(Data-Driven Documents),由于国内关于D3的学习资料少之又少,所以我觉得很有必要把自己学习过程记录下来,供同学们参考,如果文章有有哪些表达有 ...

  3. JavaWeb监听器的使用(一)监听上下文和会话信息

    1.监听上下文的类 package com.examp.ch9; import java.io.FileOutputStream; import java.io.PrintWriter; import ...

  4. java基础知识(十一)java反射机制(下)

    1.什么是反射机制? java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象都能够调用他的属性和方法,这种动态获取属性和方法的功能称为java的反射机制. ...

  5. int与CString互相转化

    int num; CString str; //int转CString num=; str.Format(_T("%d"),num); //CString转int str=L&qu ...

  6. Qt - QThread(翻译帮助文档)

    QThread Class 详细描述 QThread 类提供一个平台无关的方法来管理线程. 一个QThread对象管理一个程序中的控制线程.QThread在run()中开始执行任务.默认地,run() ...

  7. php的memcache安装,在window10下面

    1.memcached-win对应得安装包 2.解压,可以放到任意目录,以管理员身份打开cmd 3.在安装的目录下面,执行如下命令 memcached.exe -d install 安装 Memcac ...

  8. sort()基础知识总结+超简短的英文名排序写法

    结合前些天学的箭头函数我想到一种非常简短的sort排序写法:(这可能是最短的英文名排序方法了) 贴出来大家一起探讨一下: [4,1,2,32].sort((x,y)=>x>y); //[1 ...

  9. Feature Access

    在ArcGIS Server中发布支持Feature Access地图服务,你需要知道的几点: 所绘制的mxd地图文件中包含的数据,必须来自企业级数据库链接: mxd中包含的所有图层的数据,必须来自同 ...

  10. MAC OS PHP

    Apache与PHP的配置 OSX自带了apache和php,但默认情况下没有开启,打开终端 sudo apachectl start 这时在浏览器中输入localhost应该就会出现apache标准 ...