版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第宅秦XPath教学重点/掌握XPath数据模型 /掌握使用定位路径在XM L文档中航行/掌握定位路径中的操作符与函数生61什么是XPath? XPath是一门在XML文档中查找信息的语言。 XPath把XML文档映射成树状节点根节点、元素节点、属性节点、文本节点、注释节点、 处理命名节点、命名空间节点 XPath使用路径表达式在XML文档中进行导航,可 用来在XML文档中对元素和属性等节点进行遍历。定位路径是XPath表达式的特殊实例,用于查询单个或一组节点。定位路径能根据节点的类型、取值或位置来查询。引入操作符和函数是为了增强XPath表达式的使用范围。6.2 XPath的用途6.2.1使
2、用XPat h在XSLT样式表中查询节点XSLT (Extensible Stylesheet Language Transformations,扩展 样式表语言转换)定义了对XML文档中节点进行查询和转换的模板规则。每一个模板规则与XML文档中特定的节点相匹配,并规定如何将这些节点转换成输出文件Sil211211定义XSLT模板的步骤: 使用XSLT xsl:template元素来建立模板规则 指定XPath表达式作另v xsl:template元素的 match属性,用来查询满足匹配棗件的节点 定义被查询的节点如何转换2116.2 XPath的用途xsl:template match= p
3、roducts该例中,XSLT模板规则使用XPath表达式查询XML文档中的product元素。xsl:value-of元素获取每一个查询到 禹product元素的内容622 XPointer中使用XPathXPath与XPointer (XML Pointer Language)结合起来,用 来创建从一个文件到另一个文件节点的连接。通过在XPath 表达式中指明所需节点,可以连接文件的任何部分。XPointer与超连接相比,有以下优点:XPointer更加灵活,并具有可扩展性XPointer使用XPath表达式,可以定义文件间的条件连接。6.2 XPath的用途6.2.3 XQuery中使用
4、XPath XQuery是用于XML数据查询的语言 XQuery对XML的作用类似SQL对数据库的作用 XQuery被构建在XPath表达式之上古63 XPath的彳对状结构6.3.1 XML文档映射成XPath节点XPat h把XM L文档看成是树状节点,节点的次序与XM L文档文档内容古64 XPath的节点类型XPath中有7种节点类型:文档(根)节点元素节点属性节点文本节点命名空间节点处理指令节点注释节点6.4 XPath的节点类型根节点(Root Nodes)“每个XML文档只有一个根节点,根节点代表XML文档自身,它 处于XPath的最高层 元素节点(Element Nodes)/
5、 XML文档中的每一个元素在XPath中用一个元素节点来表示属性节点(Attribute Nodes)“元素可以有零个或多个属性,每个属性在XPath中用一个单 独的节点来表示。如果多个元素具有相同的属性名和值,每 个属性也用一个单独的节点来表示。“属性节点不是其所属元素的子节点“如果属性在XML文档中没有出现,但在DTD中有缺省值,该 属性仍然会在属性节点中出现。6.4 XPath的节点类型文字节点(Text Nodes)“元素的文字内容在XPath数据模型中用文字节点表示。 文字节点至少包含一个字符。文字节点没有名称命名空间节点(Namespace Nodes)/每个元素都有一组命名空间节
6、点,用来描述在该元素 范围内定义的所有命名空间(包含父元素中定义的命 名空间,以及匿名命名空间)。/命名空间节点禁止共享,即使子元素使用父元素中定 义的命名空间,子元素仍拥有与父元素不同的命名空 间节点。古64 XPath的节点类型处理命令节点(Processing Instruction Nodes) / 一个处理命令节点表示XML文档中的一条处理命令/ 一个处理命令节点的名称是处理命令中的目标部分 ?目标数据?)/ XML声明不是处理命令注释节点(Comment Nodes)“注释节点含有用!和围起来的注释。.6.5节点关系父(Parent):每个元素以及属性都有一个父下例子中,book元
7、素是title、author、year以及 price元素的父: Harry Potter J k. Rowling 2005v price 29.99士6.5节点关系子(Children):元素节点可有零个、一个或多个 子。下例子中,title、author、year以及price元素都是 book元素的子: Harry Potter J k Rowling 2005 29.99士6.5节点关系-同胞(Sibling):拥有相同的父的节点下例子中,title、author、year以及price元素都 是同胞: Harry Potter J k. Rowling2005 29.99士6.5节
8、点关系先辈(Ancestor):某节点的父、父的父,等等在下面的例壬中,title元素的先辈是book元素和 bookstore 元素:v book Harry Potter J K. Rowlingv year 2005 2999v/ price士6.5节点关系后代(Descendant):某个节点的子,子的子, 等等。下例中,bookstore的后代是 book、title、author、 year以及price元素: Harry Potter J K Rowlingv year 2005 29.99q.6.4各种节点的信息-XPath树中的每一种节点都有4种属性:节点值根节点属性属性内容
9、节点值文档中所有文字节点的内容拼接成的字符串子节点集包含根元素、在根元素之前的处理命令、在根 元素之前金之后商注瘵6.4各种节点的信息元素节点属性属性内容节点值所有子文字节点的内容拼接成的字符串节点名元素名(包含元素所属命名空间的URI)父节点通常是对父元素节点的引用(根元素的场合, 是根节点)子节点集定义为子集的元素节点、文字节点、处理命令 节点和注释节点文字节点属性属性内容节点值字符数据,至少包含一个字符父节点所属元素节点土64各种节点的信息謀节点属性属性内容节点值属性的值节点名属性名(包含属性所属命名空间的URI ,如果 属性有前缀)父节点所属元素节点(尽管属性不是元素的子集)注释节点属
10、性属性内容节点值注释内容父节点所属元素节点,或根节点(如果在根元素外定 义)6.4各种节点的信息命茗空间节点属性属性内容节点值命名空间URI节点名命名空间前缀父节点所属元素节点处理指令节点属性属性内容节点值处理指令中的数据部分节点名处理指令中的目标部分父节点所属元素节点,或根节点(如果在根元素外定 义)土65文档导航使用定位路径用来查询6.5.1什么是定位路径(Location Path) 一个定位路径就是一个XPath表达式, XML文档中的节点“定位路径有两种类型:相对定位路径和绝对定位路相对定位路径“定义相对于当前节点的路径。适用于在已经确定了一个节点 路径的基础上,进一步查找临近节点(
11、如子节点)的场合。绝对定位路径“ “/”字符开头定义相对于根节点的路径。适用于从根部开始搜索的场合士65文档导航使用定位路径6.5?创建定位路径 一个定位路径由一个或多个定位步(location step) 组成,各个定位步之间用分隔/相对定位路径:product/price/ 绝对定位路径:/catalog/product/price一个定位步由三部分构成:轴:节点测试谓语轴(Axis):定义查询类型。例如,child轴查询子元素,attribute轴查询属性。节点测试(Node test ):指明要查询的节点名称或类型, 通常是元素或属性的名称谓语(Predicate):是一个布尔表达式,
12、用于对由节点测S1试获得的节点集进行过虑。一个定位步中可以有零个或多个谓语,每个谓语都要用围起来。玄55文档导航使用定位路径/child:catalog/child:productprice 35.953定位路径按由左到右的次序解析,采用绝对路径对product 元素进行节点测试,然后对查询到的product元素集,用两个谓语进行过虑,第 一个谓语只保留嶄有其子元素price大于35. 95的product 元素,第二个谓语只保留第三个这样的product元素。简写:/catalog/productprice 35.953士6.5文档导航使用定位路径6. 65文档导航使用定位路径鹅th定义了
13、13个不同的轴XPath 轴描述self选取当前节点child选取当前节点的子节点,子级是树中当前 节点以下紧邻的任何节点。但是,属性 节点或命名空间节点均不属于当前节点的 子级。parent选取当前节点的父节点,父级是树中当前 节点以上紧邻的节点。attribute选取当前节点的所有属性,除非当前节点 为元素,否则,此轴将是空的。(6.5文档导航使用定位路径描述descendant选取当前节点的子节点和孙节点。该轴不XPath 轴会包含属性节点或命名空间节点Odescendant-or-self选取当前节点的子孙节点,以及当前节点ancestor选取当前节点的祖先节点,以及父节点O该轴总是包
14、括根节点,除非上下文节点就是根节点。ancestor-or-self选取当前节点的祖先节点,以及父节点和当前节点5.5文档导航使用定位路径XPath 轴描述following选取文档中位于当前节点结束标签之后的 的所有节点following-sibling选取following轴中与当前节点共享父节 点的节点。如果当前节点是属性节点或者 命名空间节点,则是空集preceding选取文档中所有位于当前节点的起始标签 之前的节点preceding-sibling选取preceding轴中与当前节点共享父节 点的所有节点。如果当前节点是属性节点 或者命名空间节点,则是空集namespace选取当前节
15、点的命名空间节点(6.5文档导航使用定位路径64在XPath中使用轴AxisExample - unabbreviatedExample - abbreviatedchildchild:pricepriceattributeattribute: codecodeselfself:!node()parentparent:node() descendant-or-self/descendant-or-self::node()/price/price-常用XPath轴具有简化句法与非简化句法剩余XPath轴只有非简化句法例 ancestor: :node()ancestor: :catalo3(6.
16、5文档导航使用定位路径士65文档导航使用定位路径 迪步的第一部分是轴,它决定了要搜索的节点的 类型。以下是常用轴:child attribute self parent、descendant-or-self child 轴定位步使用Child轴将返回当前节点的所有子节点。当定位步中没有指明轴时,Child轴就是缺省轴child:catalog/ child:product child:catalog返回当前节点的所有名为catalog的子节点(此时当前节点是根节点) child:product返回当前节点的所有名为product的子节点(此时当前节点是catalog)可以简写成 catalog
17、/ product attribute 轴“定位步使用attribute轴将返回选取当前节点的所有属性“如果当前节点不是元素,attribute轴将返回空集child:product/ attribute:code child:product返回当前节点的所有名为product的子节点(此时当前节点是catalog) attribute:code返回每个product元素中名为code的属性(此时当前节点是所有product)可以简写成product/ code(6.5文档导航使用定位路径 selftt定位步使用self轴将返回当前节点。self:node()的简写是(node()是匹配任何节
18、点类型的函数) parent 轴“定位步使用parent轴将返回当前节点的父节点 “根节点除外的节点都只有一个父节点parent:node()/ parent:node()/ child:product第一个parent:node()返回父节点,第二个 parent:node()返回祖父节点 child:product返回所有名为product的子元素可以简写成./ ./ product descendant-0 r s e I f 轴“定位步使用descendant-or-self轴将返回当前节点的子孙节 点,以及当前节点。/ / descendant-or-self :node()/ 的简
19、写是 / product返回根节点的所有子孙节点中名称是product的节点catalog/ / product返回当前节点的子节点catalog的所有子孙节点中名称是 product的节点。descendant-or-self轴常用户无法知道精确路径的场合, 例如v product中又嵌有v product ,但所付出的代价 是处理器要进行广泛的自回归搜索曇余轴的使用其余轴没有简写形式。使用方法如下AxisXPath axis svntaxdescendantdescendant:node()ancestor ancestor-or-self following following-sibl
20、ing precedingancestor:node() ancestor-or-self:node() following:node() following-sibling:node() preceding: node ()preceding-siblingpre c e din g- s ib 1 i n g: :node()namespacenamespace: :node()士65文档导航使用定位路径6療5在XPath中使用节点测试节点测试紧跟在轴后面,允许你/根据名称查询节点/根据类型查询节点(6.5文档导航使用定位路径根据名称查询节点无命名空间的场合:轴:节点名谓语有命名空间的场合
21、:轴:前缀:节点名谓语节点名子元素例属性例具体节点名pricecode所有节点*有命名空间具体名前缀:price前缀:code有命名空间所有节点前缀广前缀广child:node()包含chid:* (所有子元素)(6.5文档导航使用定位路径嚼据类型查询节点轴:节点类型函数谓语节点类型函数查询结果node() text()某个轴的所有节点某个轴的所有文字节点。例如 child:text()查询当前节点的所有 子文字节点。descendant:text() 查询当前节点的所有子孙文字节点comment() processing-instruct ion ()某个轴的所有注释节点某个轴的所有处理指令
22、节点,输入 参数可以指定具体名称(6.5文档导航使用定位路径例子结果(6.5文档导航使用定位路径child: book attribute: lang child: attribute:* child :text() child: :node() descendant: :book ancestor: :book选取所有属于当前节点的子元素的book节点ancestor-or- self:book child:來/child:price选取当前节点的所有price孙。选取当前节点的lang属性 选取当前节点的所有子元素 选取当前节点的所有属性选取当前节点的所有文本子节点选取当前节点的所有子节点
23、选取当前节点的所有book后代 选择当前节点的所有book先辈选取当前节点的所有book先辈以及当前节点(假如此 节点是book节点的话)(6.5文档导航使用定位路径路径表达式结果bookstore选取所有名为bookstore的子节点(child: bookstore)/bookstore选取根元素bookstore注释:正斜杠(/),此路径始终代表到某元素的绝对路径!bookstore/book选取所有名为book的节点,且book节点是bookstore的子节点,而bookstore节点是当前节点的子节点。/book选取所有名为book子孙节点,而不管它们在文档中的位置。bookstor
24、e/book选择所有属于bookstore节点的后代book节点,而不管它 们位于bookstore之下的什么位置。/lang选取所有名为lang的属性。(6.5文档导航使用定位路径通配符描述*匹配任何元素节点*匹配任何属性节点node()匹配任何类型的节点路径表达式结果/bookstore/*选取bookstore元素的所有子节点*选取文档中的所有元素title*选取所有带有属性的title元素。表达式描述nodename选取此节点的所有子节点/从根节点选取/从匹配选择的当前节点选择文档中的节点,而不 考虑它们的位置选取当前节点 选取当前节点的父节点选取属性(6.5文档导航使用定位路径606
25、在XPath中使用谓语一个定位步可包含零个谓语或多个谓语轴:节点测试谓语根据位置进行过虑:“大多数XPath轴按文档顺序对节点进行标号。即文档开头节 点的标号低,文档末尾节点标号高“你在过虑时可以使用前向轴或反转轴。ancestor, ancestor-or-self, preceding, and preceding-sibling都 是反转轴,其余是前向轴“节点集中的每个节点都有一个邻近位置(proximity position),来描述该节点在集合中的位置。对于前向轴 依文档顺序而定,位置从1开始。对于反转轴依逆文档顺序 而定,位置从1开始。禺65文档导航使用定位路径例解释product
26、1选择当前节点的第一个V product 子元素productlast()选择当前节点的最后一个子元素/ catalog/ product2选择vcatalog的第二个子元素(6.5文档导航使用定位路径根据取值进行过滤:例解释productcode选择当前节点的 子元素中含有 code 属性的 v product 元素productcode and discount选择当前节点的 子元素中含有 code和discount属性的 v product元素(6.5文档导航使用定位路径使用多个谓语多个谓语由左到右进行解析例解释product3 discount选择当前节点的第三个 子元素,如果 该v
27、product元素中含有 discount 属性product discount 3选择当前节点的子元素中,含 有discount属性的第三个 元素士6.5文档导航使用定位路径6療7在XPath中使用集合表达式和函数使用“ I ”操作符合并集合例解释cd dvd返回所有vcd、dvd子元素集 合(cd | dvd) / capacity返回具有capacity属性的所有 vcd、vdvd子元素集合/*/(cd dvd)返回所有 cd vdvd子元素集 合,且 cd dvd必须是根元 素的子元素/* /*返回文档中的所有元素和属性路径表达式结果/book/title | /book/price选
28、取所有book元素的title和 price元素。/title | /price选取所有文档中的title和price元 素。/bookstore/book/title | /price选取所有属于bookstore元素的 book元素的title元素,以及文 档中所有的price元素。士6.5文档导航使用定位路径函数功能positi on()返回节点集合中某个节点的位置(从1开始)last()返回true,若该节点是节点集合中最后一个节点count()返回节点集合中节点的个数还有id(),local-name() , namespaceuri() , name()例解释cdlast()返回当
29、前节点的最后一个V cd 子元素count(cdcapacity = 250)返回capacity属性值是250的 vcd元素的个数士6.5文档导航使用定位路径操作符功能=、!=等于,不等于、=、V、 =大于、大于等于、小于、小于等于and与or或使用布尔操作符和函数productprice 10 or price 100返回所有子元素v product ,如果v product元素的子 元素V price的值大于100或小于10在XML文档(例如XSLT样式表)中使用运算符时,V和 标记必须分别转义为& It;和>。禺65文档导航使用定位路径函数功能boolea n()将Xpath数据
30、类型转换成布尔值。空节 点集合转换成false,非空点集合转换 成true。数值0转换成false,其余是 true。空字符串转换成false,其余是 true。not()返回true或false。当输入参数是 Xpath数据类型时,自动先使用 boolean()进行处理。还有true(), false(), lang()士6.5文档导航使用定位路径boolean(/ / productcode= 123)返回false,如果没有code属性值是123的v product元素authornot(degree or award) and publication 至少包含一个v publicati
31、on元素但是不包含任何 元素或 v award 元素的所有 v author元素。士6.5文档导航使用定位路径路径表达式结果/books tore/bookl /bookstore/booklast()/bookstore/booklast()-l选取属于bookstore子元素的第一个book元素。 选取属于bookstore子元素的最后一个book元素。 选取属于bookstore子元素的倒数第二个book元 素。/bookstore/bookposition() v3/title lang选取最前面也两个属于bookstore元素的子元素 的book元素。/title lang= eng
32、/bookstore/bookprice35. 00/bookstore/bookprice35. OO/title选取所有拥有名为lang的属性的title元素。选取所有title元素,且这些元素拥有值为eng的 lang属性。选取所有bookstore元素的book元素,且其中的 price元素的值须大于35.00 o选取所有bookstore元素中的book元素的title元素,且其中的price元素的值须大于35.00。士6.5文档导航使用定位路径符的优先次序(由上而下)操作符功能0组合过滤/ /路径操作 =比较=!=比较1合并and与or或在XML文档(例如XSLT样式表)中使用运算
33、符时, v和 标记必须分别转义为<和>。表达式和函数功能操作符对数据符号取反+ * div mod加、减(左右要有空格)、乘、除 Siaccountbalance overdraft-limit 100返回其子元素vbalance减v overdraftlimit 大于100的 account 元素士6.5文档导航使用定位路径士6.5文档导航使用定位路径函数函数功能number()ffiXPath数据类型转换成数据。字符串 转换成最接近的数字或NaN。节点先转换成字符串,再转换成数字。布尔值转floor() ceiling() roimd() sum()返回小于等于输入参数的最大整
34、数返回大于等于输入参数的最小整数返回最接近输入参数的整数求和(6.5文档导航使用定位路径accountnumber(/ branch/ oldestaccount)先把v branch元素的oldest-account属性转换成数字,然后根据数字确定是第几个account元素。floor(7.5)返回7floor(-7.5)返回-8ceili ng(7.5)返回8ceil in g(-7.5)返回-7round(7.5)返回8roun d(-7.5)返回-7roun d(7.5)返回8士6.5文档导航使用定位路径守串操作函数(了解)函数功能string()把XPath数据类型转换成字符串。布 尔值转换成true和falseo节点集转换 成第一个节点的字符集。strin g-length()返回字符串长度concat()字符串拼接starts-with()返回true,如果第一个输入参数以第 二个输入参数开头contains()返回true,如果第一个输入参数包含 第二个输入参数开头士6.5文档导航使用定位路径士6.5文档导航使用定位路径函数功能substring()输入参数有三个:源字符串、开始 位置、子字符串长度(可选)。返回
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全文明施工监理实施细则
- 药学门诊服务流程规范
- 智能粉碎仪使用安全指南
- 汽车制造人力资源
- 交通信号灯验收标准规范
- 海洋生态环境修复实施方案
- 医学人工智能岗位实操培训手册
- 金属加工厂设备保养细则
- 工程竣工结算审计交底记录模板
- 物业绿化养护作业技术规范
- 2025江苏中吴环保产业发展有限公司电镀产业园运营总监岗招聘2人笔试备考试题及答案解析
- 个体工商户登记申请书、提交材料规范、经营者变更登记承诺书
- 肌肉注射的试题及答案
- 香港繁体合同协议
- 手术室护理清点不良事件
- 硬质合金生产工艺流程
- 《 大学生军事理论教程》全套教学课件
- AQ-7015-2018-氨制冷企业安全规范
- 生物医学传感与检测原理 课件 第7、8章 生物医学中的化学传感与检测、生物标志物的传感检测新技术
- 消防维保方案(消防维保服务)(技术标)
- mt654 1997煤矿用带式输送机安全
评论
0/150
提交评论