XPath

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

返回
位置路径的构成
位置步之间利用反斜杠(/)串接成位置路径。 位置路径中的每一步都相对其前一步 如果位置路径以反斜杠打头,则该路径的第一 步将相对与根结点;否则该路径的第一步将相 对上下文结点。
位置步 // .. . 描述 上下文结点的所有后代结点,包括上下文结点本身 上下文结点的父结点 上下文结点本身
如下 XML 文档:
<?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> </bookstore>
XSLT用XPath表达式来匹配和选择输入XML文档 的特定部分以便执行相应操作并生成输出文档 XPointer用XPath表达式来定位外部XML文档的某 个特定部分 W3C XML Schema用XPath表达式来定义唯一性限 制
XML文档的树型结构(1)
一个XML文档以看成由结点(nodes)构成的树。 XPath是在文档树中选择结点或结点集的语言。 XPath区分了如下类型的结点
返回
位置路径与基本位置步(2)
位置步 / 元素名 @属性名 comment() text() processing-instruction() processing-instruction(目标) * node() @* 位置路径1|位置路径2|… 描述 文档的根结点 上下文结点的所有具有给定元素名的子元素 上下文结点的所有具有给定属性名的属性 上下文结点的所有注释子结点 上下文结点的所有文本子结点 上下文结点的所有处理指令子结点 上下文结点的所有具有指定目标的处理指令 子结点 上下文结点的所有子元素,可以带前缀 上下文结点的所有子结点 上下文结点的所有属性,*前可以带前缀 多值匹配
XPath函数(2):字符串函数
string():将参数转换为字符串
参数为布尔型:转换为"true"或"false" 参数为数值型:与其他编程语言类似 参数为结点集:结点集中第一个结点的文本内容
starts-with() contains() substring-before() substring-after() substring() string-length() normalize-space() translate() concat():参数个数可变
完整形式的路径(1)
XPath规定:位置路径中的每个位置步都由三部分构成
轴线(axis):必须的部分,指明从上下文结点出发在什么方 向上寻找匹配的下一个结点。 结点测试(node test):必须的部分,标识出在指定方向上匹 配的结点(结点集)。 谓词(predicate):可选部分,提供额外的表达式以进一步缩 减匹配的结点数。
返回
练习:指出以下路径表达式表示的 结果
1.//book/@category 2./bookstore//@lang 3. /bookstore/book 4. "/bookstore/book[@category='WEB'] 5.//title[@*] 6.//book/title|//book/price 7.//title/@lang 8. //price[.<30] 9. "//book[price<30]“ 10. "//book[year<2005 and year>=2003]“ 11./bookstore/book[0] 12./bookstore/book 13."/bookstore/book/price/text() 14./bookstore/book[price>35]/title 15. /bookstore/book[position()<3]
完整形式的路径的一般形式为: 轴线::结点测试[谓词] 之前所给出的位置路径都是简写形式,简写形式的位置步 里,轴线和结点测试两部分是合并的。 示例:下面两个位置路径是等价的
people/person/@id child::people/child::person/attribute::id
返回
完整形式的路径(2)
节点例子:
<bookstore> (文档节点) <author>J K. Rowling</author> (元素节点) lang="en" (属性节点)
位置路径与基本位置步(1)
XPath表达式中最有用的是位置路径(location paths)。 一条位置路径表示文档中的一组结点。 上述所谓一组结点,可以不包含任何结点、包 含一个结点或包含多个结点。 一条位置路径由连续的若干个位置步(location steps)构成 每个位置步将根据文档中被称为上下文结点 (context nodes)的特殊结点进行(XPath expressions)的 一种,其值是一个结点集 XPath XPath表达式可以是数值、布尔型值或字符串
数值:内部都使用8个字节的双精度浮点形式,可以 用+、-、*、div和mod进行四则运算。 布尔型:值是二值的,典型的例子是谓词。XPath中 没有内置的布尔型常量 字符串:用一对单引号或一对双引号括起的Unicode 字符序列。可以用=或!=进行比较。
XPath函数(1):概述
XPath提供了十分丰富的函数 XPath的函数返回值有四种类型 布尔型 数值型 结点集 字符串 XPath不强调类型,因此往往调用函数时参数的 类型并不重要 有的XPath函数是可变参数的。 XPath的函数以括号标识
XPath函数(1):结点集函数
position():返回当前结点在上下文结点表中的位 置 count():返回上下文结点表包含的结点数 name():接收一个结点集,返回其第一个结点的 名字;如果参数省则考查上下文结点。 local-name():接收一个结点集,返回其第一个结 点的名字之本地部分(不含命名空间);如果参 数省则考查上下文结点。 namespace-uri():接收一个结点集,返回其第一 个结点的命名空间;如果参数省则考查上下文结 点。
XPath
结束
提纲
XPath概述 XPath基础
XML文档的树型结构 位置路径与基本位置步 位置路径的构成
XPath进阶
谓词 完整形式的路径 通用XPath表达式 XPath函数
返回
XPath概述
XPath不是XML语言,引进XPath的目的是希望能提供标 识XML文档某个特定部分的能力。 XPath表达式用于根据位置、相对位置、类型或内容等信 息确定结点(或结点集) XPath 使用路径表达式来选取 XML 文档中的节点或者节 点集 XPath已被用在很多方面
XPath函数(3):布尔函数
boolean():将参数转换为布尔型
参数是数值:如果值为零或NaN则转换为假,否则转 换为真 参数是字符串:如果字符串长度为0则转换为假,否 0 则转换为真 参数是结点集:如果结点集为空(不包含任何结点) 则转换为假否则转换为真
true() false() not()
返回
XPath函数(4):数值函数
number():将参数转换为数值
参数是布尔型:为真则转换为1,否则转换为0 参数是字符串:为数值串则转换为相应数值,否则转 换为NaN NaN 参数是结点:先转换为字符串再转换为数值 参数省略:转换上下文结点
round() floor() ceiling() sum():接收一个结点集参数,将结点集里的各结 点转换为数值型并求和。
示例
返回
谓词
位置路径中的每一步都可以带一个谓词以从当前步所对 应的结点集中选择一部分子集。 谓词包含Boolean表达式,该Boolean表达式将用于对 上下文结点表中的各结点进行测试,如果表达式值为假, 则相应结点将被从列表格中删除,否则保留。 让某一个步骤带谓词的方式是:在该步骤之后添加由一 对方括号包围的Boolean表达式。 基本Boolean表达式中可以包含关系运算符(<、<=、>、 >=、=、!=)或逻辑运算符(and和or) 谓词也可以不是Boolean类型,数值型的谓词用于是匹 配上下文结点的位置(从1开始计数) 示例
根结点(root node) 元素结点(element nodes) 文本结点(text nodes) 属性结点(attribute nodes) 注释结点(comment nodes) 处理指令结点(processing-instruction nodes) 命名空间结点(namespace nodes)
完整形式的路径很累赘,在实际应用中不常用 完整形式的路径提供了比简写形式更强的功能 完整形式的路径中可以指定的轴线有
轴线 ancestor attribute descendant following namespace preceding self 含义 上下文结点的祖先 @ 上下文结点的子孙 上下文结点的后继 上下文结点里的命 名空间子结点 上下文结点的前趋 . 轴线 ancestor-or-self child descendant-or-self following-sibling parent preceding-sibling 含义 上下文结点的祖先 及其本身 上下文结点的儿子 // 上下文结点的弟弟 .. 上下文结点的兄长
相关文档
最新文档