XPath的使用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功