XSL学习笔记4 XSLT模式匹配的语法

简介:
 
模板规则通过使用模式来匹配文档树的节点。模式指定一组条件,用于选择要处理的节点。
 
模式匹配的语法不光可以在<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()函数就不能正常工作。

本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/60446,如需转载请自行联系原作者
相关文章
|
7月前
|
JavaScript 前端开发 索引
JavaScript中的正则表达式:使用与模式匹配
【4月更文挑战第22天】本文介绍了JavaScript中的正则表达式及其模式匹配,包括字面量和构造函数定义方式,以及`test()`、`match()`、`search()`和`replace()`等匹配方法。正则表达式由元字符(如`.`、`*`、`[]`)和标志(如`g`、`i`)组成,用于定义搜索模式。文中还分享了正则使用的技巧,如模式分解、非捕获分组和注释。掌握正则表达式能提升文本处理的效率和代码质量。
|
JavaScript
正则表达式之简易markdown文件解析器
正则表达式之简易markdown文件解析器
151 0
Mustache语法
Mustache语法
135 0
|
存储 数据采集 前端开发
细说JavaScript正则表达式(RegExp)
搜索、匹配和聚合是日常网络活动的重要组成部分,例如,当浏览或搜索某些关键字时,会进行大量搜索。为了使 搜索/匹配 高效和精确,像 VsCode 和 Sublime 这样的流行编辑器都是使用正则表达式来支持搜索和替换。因此,在使用这些编辑器的时候,当按下 CTRL + F 组合键时,就可以搜索和匹配选择的文本。
166 0
|
XML PHP 数据格式
xinclude和xslt的利用
参考文献:http://skysec.top/2018/08/18/%E6%B5%85%E6%9E%90xml%E4%B9%8Bxinclude-xslt/ 环境 libxml:2.9.4 win10 Xinclude 用于合并XML文档的通用机制,通过在“主”文档中编写包含标记来自动包含其他文档或其他部分。
1256 0
|
移动开发 程序员 前端开发
H5学习从0到1-xhtml语法(15)
xhtml定义了一套语法的语法规范 简要介绍一下 1.必须正确的嵌套 2.标签必须结束 3.元素必须小写 4.文档必须有一个根元素 html属性规范 1.
963 0