- 浏览: 71641 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
jinbo0120:
受教了,我还一直存在疑问呢,原来是1.5开始使用的...看来我 ...
5.0for循环 -
persistC:
1、到底在哪用cascade=&q ...
hibernate.hbm.xml总结 -
duanyong:
看到xml就烦。不知道为什么。嘿嘿。
hibernate.hbm.xml总结
4.XPath的语法
我们在前面已经提到过,XPath是用来帮助XSLT在XML源文档中查找定位信息的语言。在实际使用过程中,XPath和XSLT总是混在一起使用,在上面一章的语法例子中我们已经有使用到XPath的语法,只是没有明确点出。但W3C将它们分成两个标准,所以我们也将它们拆成两章来讲解。
4.XPath的语法
4.1 当前位置
4.2 寻址操作
4.3 运算符
4.4 功能函数
4.1 当前位置
当我们使用XSLT处理XML源文档是,我们用Context来表示当前正在被模板处理的节点位置。比如xsl:template match="/"语句中表示Context在文档的根(root)节点。我不知道如何准确的翻译Context这个词,它类似于C语言里的指针,表示程序当前运行的位置。理解Context对于正确处理XSL模板非常重要,当您的XSL模板输出的文档和您想要的不一样,最先应该分析的就是Context 在哪里。
Location Paths是用于设定你想要寻找的Context节点位置。就类似DOS的目录命令。我们看个例子
<xsl:for-each select="child::PEOPLE/descendant::PERSON">
其中child::PEOPLE/descendant::PERSON就是XPath语法,这个表达式就是一个Location Paths,代码说明要显示所有PEOPLE元素的子元素和所有PERSON元素的子元素。通常我们会采用更简单的写法:
<xsl:for-each select="PEOPLE//PERSON">
我们来解释path的两种表示方法:"/"和"//"。
"/"是表示当前文档的节点,类似DOS目录分割符。例如:/PEOPLE表示选择根节点下的PEOPLE元素;PEOPLE/PERSON表示选择PEOPLE元素下所有的PESON子元素。
"//"则表示当前文档所有的节点。类似查看整个目录。例如://PEOPLE表示选择文档中所有的PEOPLE元素,无论它在什么层次;PEOPLE//PERSON表示在PEOPLE元素下所有的PERSON元素,无论它的层次多深。
4.2 寻址操作
Axis和Predicate是XPath语法中对Location Paths进行定位操作的语法,具体的用法列表如下
Axis语法表
--------------------------------------------------------
表达式 简写 说明
--------------------------------------------------------
self . 选择当前的节点.。
例子 :
<TD><xsl:value-of select="."/></TD>
代码表示在当前位置插入当前的节点包含的文本(text)值,
--------------------------------------------------------
parent .. 选择当前节点的父节点。
--------------------------------------------------------
attribute @ 选择一个元素的所有属性。
例子:
<TD><xsl:value-of select="@PERSONID"/></TD>
选择PERSON元素的所有属性.
--------------------------------------------------------
child 选择当前节点的所有子元素。
--------------------------------------------------------
ancestor 选择当前节点的所有父元素(包括父元素的父元素,类推)
--------------------------------------------------------
Axis帮助我们选择当前节点周围所有的节点,而Predicate则用来定位当前节点内部的元素。表示方法为方括号[]中加表达式:[ Expression ]。具体举例如下:
PERSON[position()=2]
这句代码表示寻找第二个"PERSON" 元素
PERSON[starts-with(name, "B")]
这句代码表示寻找所有名称以"B"开头的PERSON元素。
4.3 运算符
这一节介绍XPath的运算符(Expressions),列表如下:
--------------------------------------------------------
运算符 说明
--------------------------------------------------------
and, or 就是普通意义的and, or
--------------------------------------------------------
= 等于
--------------------------------------------------------
!= 不等于
--------------------------------------------------------
>, >= 大于,大于等于
--------------------------------------------------------
<, <= 小于,小于等于。注意:在XSL文件中,<符号要用< 表示
--------------------------------------------------------
+, -, *, div 加减乘除
--------------------------------------------------------
mod 取模
--------------------------------------------------------
| 两个节点一起计算
--------------------------------------------------------
4.4 功能函数(Functions)
在XPath里有很多功能函数可以帮助我们精确寻找需要的节点。
count()功能
作用:统计计数,返回符合条件的节点的个数。
举例:<p><xsl:value-of select="count(PERSON[name=tom])"/></p>
说明:代码的用途是显示PERSON元素中姓名属性值为tom有几个。
number()功能
作用:将属性的值中的文本转换为数值。
举例:<p>The number is: <xsl:value-of select="number(book/price)"/></p>
说明:代码的用途是显示书的价格。
substring() 功能
语法:substring(value, start, length)
作用:截取字符串。
举例:<p><xsl:value-of select="substring(name, 1, 3)"/></p>
说明:代码的用途是截取name元素的值,从第一个字母开始显示到第三个。
sum()功能
作用:求和。
举例:<p>Total Price = <xsl:value-of select="sum(//price)"/></p>
说明:代码的用途是计算所有价格的和。
上面这些功能只是XPath语法中的一部分,还有大量的功能函数没有介绍,而且目前XPath的语法仍然在不断发展中。通过这些函数我们可以实现更加复杂的查询和操作。
看到这里,我们的入门教程就快结束了。通过走马观花式的快速学习,希望大家对XSLT应该有了一点基本概念:XSLT是一种转换XML文档的语言,它包含两个过程:转换和格式化。XSLT的功能比CSS强大得多,它有类似数据查询的语法。如果您对XSLT感兴趣,那么以上的知识是远远不够的,需要查询更多的资料。阿捷在最后一章附录为大家提供了主要的XSLT资源。
我们在前面已经提到过,XPath是用来帮助XSLT在XML源文档中查找定位信息的语言。在实际使用过程中,XPath和XSLT总是混在一起使用,在上面一章的语法例子中我们已经有使用到XPath的语法,只是没有明确点出。但W3C将它们分成两个标准,所以我们也将它们拆成两章来讲解。
4.XPath的语法
4.1 当前位置
4.2 寻址操作
4.3 运算符
4.4 功能函数
4.1 当前位置
当我们使用XSLT处理XML源文档是,我们用Context来表示当前正在被模板处理的节点位置。比如xsl:template match="/"语句中表示Context在文档的根(root)节点。我不知道如何准确的翻译Context这个词,它类似于C语言里的指针,表示程序当前运行的位置。理解Context对于正确处理XSL模板非常重要,当您的XSL模板输出的文档和您想要的不一样,最先应该分析的就是Context 在哪里。
Location Paths是用于设定你想要寻找的Context节点位置。就类似DOS的目录命令。我们看个例子
<xsl:for-each select="child::PEOPLE/descendant::PERSON">
其中child::PEOPLE/descendant::PERSON就是XPath语法,这个表达式就是一个Location Paths,代码说明要显示所有PEOPLE元素的子元素和所有PERSON元素的子元素。通常我们会采用更简单的写法:
<xsl:for-each select="PEOPLE//PERSON">
我们来解释path的两种表示方法:"/"和"//"。
"/"是表示当前文档的节点,类似DOS目录分割符。例如:/PEOPLE表示选择根节点下的PEOPLE元素;PEOPLE/PERSON表示选择PEOPLE元素下所有的PESON子元素。
"//"则表示当前文档所有的节点。类似查看整个目录。例如://PEOPLE表示选择文档中所有的PEOPLE元素,无论它在什么层次;PEOPLE//PERSON表示在PEOPLE元素下所有的PERSON元素,无论它的层次多深。
4.2 寻址操作
Axis和Predicate是XPath语法中对Location Paths进行定位操作的语法,具体的用法列表如下
Axis语法表
--------------------------------------------------------
表达式 简写 说明
--------------------------------------------------------
self . 选择当前的节点.。
例子 :
<TD><xsl:value-of select="."/></TD>
代码表示在当前位置插入当前的节点包含的文本(text)值,
--------------------------------------------------------
parent .. 选择当前节点的父节点。
--------------------------------------------------------
attribute @ 选择一个元素的所有属性。
例子:
<TD><xsl:value-of select="@PERSONID"/></TD>
选择PERSON元素的所有属性.
--------------------------------------------------------
child 选择当前节点的所有子元素。
--------------------------------------------------------
ancestor 选择当前节点的所有父元素(包括父元素的父元素,类推)
--------------------------------------------------------
Axis帮助我们选择当前节点周围所有的节点,而Predicate则用来定位当前节点内部的元素。表示方法为方括号[]中加表达式:[ Expression ]。具体举例如下:
PERSON[position()=2]
这句代码表示寻找第二个"PERSON" 元素
PERSON[starts-with(name, "B")]
这句代码表示寻找所有名称以"B"开头的PERSON元素。
4.3 运算符
这一节介绍XPath的运算符(Expressions),列表如下:
--------------------------------------------------------
运算符 说明
--------------------------------------------------------
and, or 就是普通意义的and, or
--------------------------------------------------------
= 等于
--------------------------------------------------------
!= 不等于
--------------------------------------------------------
>, >= 大于,大于等于
--------------------------------------------------------
<, <= 小于,小于等于。注意:在XSL文件中,<符号要用< 表示
--------------------------------------------------------
+, -, *, div 加减乘除
--------------------------------------------------------
mod 取模
--------------------------------------------------------
| 两个节点一起计算
--------------------------------------------------------
4.4 功能函数(Functions)
在XPath里有很多功能函数可以帮助我们精确寻找需要的节点。
count()功能
作用:统计计数,返回符合条件的节点的个数。
举例:<p><xsl:value-of select="count(PERSON[name=tom])"/></p>
说明:代码的用途是显示PERSON元素中姓名属性值为tom有几个。
number()功能
作用:将属性的值中的文本转换为数值。
举例:<p>The number is: <xsl:value-of select="number(book/price)"/></p>
说明:代码的用途是显示书的价格。
substring() 功能
语法:substring(value, start, length)
作用:截取字符串。
举例:<p><xsl:value-of select="substring(name, 1, 3)"/></p>
说明:代码的用途是截取name元素的值,从第一个字母开始显示到第三个。
sum()功能
作用:求和。
举例:<p>Total Price = <xsl:value-of select="sum(//price)"/></p>
说明:代码的用途是计算所有价格的和。
上面这些功能只是XPath语法中的一部分,还有大量的功能函数没有介绍,而且目前XPath的语法仍然在不断发展中。通过这些函数我们可以实现更加复杂的查询和操作。
看到这里,我们的入门教程就快结束了。通过走马观花式的快速学习,希望大家对XSLT应该有了一点基本概念:XSLT是一种转换XML文档的语言,它包含两个过程:转换和格式化。XSLT的功能比CSS强大得多,它有类似数据查询的语法。如果您对XSLT感兴趣,那么以上的知识是远远不够的,需要查询更多的资料。阿捷在最后一章附录为大家提供了主要的XSLT资源。
发表评论
-
XSLT2.0---正则表达式
2009-06-06 16:27 944其实,正则表达式是XPATH2.0定义的,暂且放在XSLT里说 ... -
XSLT2.0----<xsl:analyze-string>
2009-06-06 16:26 896<xsl:analyze-string>是XS ... -
XSLT2.0----<xsl:variable>和<xsl:sequence>
2009-06-06 16:25 2943我们知道,<xsl:variable>可以定义变量 ... -
XSLT2.0----XPATH2.0序列
2009-06-06 16:24 928严格说来XPATH2.0和XSLT2.0并无直接联系,但是XP ... -
XSLT2.0----字符映射
2009-06-06 16:23 649XSLT2.0提供了字符映射功能。 对于特殊字符或特殊字符, ... -
XSLT2.0---临时结果树
2009-06-06 16:23 1003<xsl:variable>可不是新东西了,它 ... -
XSLT2.0---多文件输出
2009-06-06 16:22 941<xsl:result-document>指 ... -
XSLT2.0---分组
2009-06-06 16:20 1202看了些关于XSLT2.0的东西,先来总结一下分组吧。 &l ... -
xsl2.0正则
2009-06-05 11:46 1014<xsl:analyze-string>是XSLT ... -
XSLT 2.0 的新特性
2009-06-05 11:44 1510XSLT 2.0 的新特性 关键 ... -
XSLT Designer快速入门指南
2008-12-15 21:07 880目录 概述 配 ... -
XSLT document()函数在IE与Firefox中的区别
2008-12-15 21:07 911XSLT 中 document() 函数的作用是用来访问扩展X ... -
了解XSLT
2008-12-15 21:06 927什么是XSLT? XSLT的英文标准名称为eXtensibl ... -
XSL中count()的使用
2008-12-15 21:05 1020XSL中用count()来取得xml中某种节点的个数 list ... -
XSL学习心得-制作图像超链接
2008-12-15 21:04 762这是我今天学习的时候遇到的另一个问题,做图像超链接要把链接地址 ... -
xslt的简单使用[xml-->html]
2008-12-15 21:03 991XSLT命令[xml格式转换] 1.循环 <xsl:f ... -
XSL中利用xsl:for-each时给每一项添加序号
2008-12-15 21:02 1694经常用for-each来循环读取XML中的某个节点集,但常常需 ... -
第三章:XSLT的元素语法
2008-12-15 20:59 863通过前面两章的介绍,我们已经对XSLT的基本概念和它的转换过程 ... -
第二章:XSLT的实例
2008-12-15 20:59 9762. XSLT的实例 2.1 XSLT如何转换XML 2.2 ... -
第一章:XSLT的概念
2008-12-15 20:58 7731.XSLT的概念 1.1 什么是XSLT 1.2 为什么要 ...
相关推荐
第4章 在.NET中读取XML 第5章 在.NET中编写XML 第6章 在.NET中实现DOM 第7章 XPath和.NET 第8章 XSLT 第9章 在.NET中使用XSLT 第10章 XML模式—背景知识、语言和一般用法 第11章 XML...
第4章 文档类型定义 第5章 XML Schema 第6章 RELAX NG 第Ⅲ部分 处理过程 第7章 XPath 第8章 XSLT 第Ⅳ部分 数据库 第9章 XML查询语言——XQuery 第10章 XML与数据库 第Ⅴ部分 程序设计 第11章 文档对象模型(DOM) 第...
2、理解XPath的类型系统和序列类型等相关概念,掌握XPath表达式语法和执行语义,能够熟练地、灵活地运用各种关系轴、判定谓词和XPath基本函数编写查询表达式。 3、掌握XSLT文档中基本语法单元的使用,比如模板的定义...
本书在讨论XML基本原理和结构的基础上,运用实例描述了...第四章 Schema 第五章 名域. 第六章 CSS 第七章 XSL. 第八章 XPath、XLink和XPointe 第九章 XML的DOM接口 第十章 SAX. 第十一章 数据库访问 附 录 应用程序实例
第一章 python基础 ...第四章 正则表达式 第五章 lxml库和xpath语法 第七章 数据库存储 第八章 多进程爬虫 第九章 异步加载 第十章 表单交互和模拟登陆 第十一章 Selenium模拟浏览器 第十二章 Scrapy
第4章 文档类型定义 有效的文档、编写DTD、DTD元素定义、DTD属性定义 第5章 XML Schema 什么是Schema?、Schema与DTD比较、Schema文档结构、Schema数据类型、元素数量、Schema属性定义 第6章 XPath技术 什么是...
第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、编写第一个jsp文件 4.5、交互性 4.6、本...
小白整理大一期间学习的爬虫知识 在学习爬虫前,我是学习了基础的python语法 对学过任何一门编程语言的人来说,还是比较容易...数据解析:xpath bs4 数据存储 提供两个简单例子,跟一个老师学习的,注释都很详细 import
第4章 DOM基础及高级DOM技术 柳州龙腾.xml XML-无限数据传输 Test4Document.htm 访问DOM对象的相关节点 Test4Document.htm 检测节点类型 Test4Attribute.htm 节点的属性解析 get&setAttribute.htm 节点的...
第4章 DOM基础及高级DOM技术 柳州龙腾.xml XML-无限数据传输 Test4Document.htm 访问DOM对象的相关节点 Test4Document.htm 检测节点类型 Test4Attribute.htm 节点的属性解析 get&setAttribute.htm 节点的属性解析 ...
第4章 使用路径定位输入文件 4.1 路径表达式 4.2 谓词 4.3 动态路径 4.4 输入文件 4.5 深入了解上下文 第5章 在结果中增加元素和属性 5.1 包含输入文件中的元素和属性 5.2 直接元素构造器 5.3 计算构造器 第6...
全书一共被压缩为5个rar,这是第四个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何...
jQuery核心语法 1、关于页面元素的引用 通过jquery的$()引用元素包括通过id、class、元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom定义的方法。 2、...
第4章 xsl转换 101 4.1 xslt概述 101 4.2 xalan处理器 105 4.3 模板规则 106 4.4 [xsl:apply-templates]元素 107 4.5 [xsl:value-of]元素 108 4.6 [xsl:for-each]元素 110 4.7 匹配节点的模式 111 4.8 mode...
第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、编写第一个jsp文件 4.5、交互性 4.6、本...
第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、编写第一个jsp文件 4.5、交互性 4.6、本...
第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、编写第一个jsp文件 4.5、交互性 4.6、本...
第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、编写第一个jsp文件 4.5、交互性 4.6、本...
第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、编写第一个jsp文件 4.5、交互性 4.6、本...
第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、编写第一个jsp文件 4.5、交互性 4.6、本...