`
ekumen
  • 浏览: 107594 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

xmlStudy4-XPath

    博客分类:
  • xml
XML 
阅读更多
0. 在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。
基本值(或称原子值,Atomic value)基本值是无父或无子的节点。
1.
表达式                        描述
nodename                     选取此节点的所有子节点
/                                     从根节点选取
//                         从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
.                                     选取当前节点
..                               选取当前节点的父节点
@                                     选取属性
2. 实例
/bookstore/book[1]                 选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book[last()]            选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1]         选取属于 bookstore 子元素的倒数第二个 book 元素。
/bookstore/book[position()<3]   选取最前面的两个属于 bookstore 元素的子元素的 book 元素。
//title[@lang]                         选取所有拥有名为 lang 的属性的 title 元素。
//title[@lang='eng']                 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。
/bookstore/book[price>35.0]   选取所有 bookstore 元素的 book 元素,且其中的 price 元素的值须大于 35.0
3. 通配符
*               匹配任何元素节点
@*             匹配任何属性节点
node()        匹配任何类型的节点
4. step
步的语法:
轴名称::节点测试[谓语]
5.轴名称
轴名称                           结果
ancestor                选取当前节点的所有先辈(父、祖父等)
ancestor-or-self      选取当前节点的所有先辈(父、祖父等)以及当前节点本身
attribute                选取当前节点的所有属性
child                     选取当前节点的所有子元素。
descendant            选取当前节点的所有后代元素(子、孙等)。
descendant-or-self  选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
following                选取文档中当前节点的结束标签之后的所有节点。
namespace             选取当前节点的所有命名空间节点
parent                   选取当前节点的父节点。
preceding               选取文档中当前节点的开始标签之前的所有节点。
preceding-sibling     选取当前节点之前的所有同级节点。
self                       选取当前节点。
6.实例
child::* 选取当前节点的所有子元素
attribute::* 选取当前节点的所有属性
child::text() 选取当前节点的所有文本子节点
child::node() 选取当前节点的所有子节点
7.FLWOR+HTML
<ul>
{
for $x in doc("Untitled3.xml")/bookstore/book/title
where $x/price>30.00
order by $x
return <li>{data($x)}</li>
}
</ul>
8. 请注意 "If-Then-Else" 的语法:if 表达式后的圆括号是必需的。else 也是必需的,不过仅仅写 “else ()” 也是可以的。
9.在 XQuery 中,有两种方法来比较值。
通用比较:=, !=, <, <=, >, >=
值的比较:eq、ne、lt、le、gt、ge
$bookstore//book/@q > 10如果 q 属性的值大于 10,上面的表达式的返回值为 true。
$bookstore//book/@q gt 10如果仅返回一个 q,且它的值大于 10,那么表达式返回 true。如果不止一个 q 被返回,则会发生错误。
10. for 语句

for $x in (1 to 5)
return <test>{$x}</test>

结果:
<test>1</test>
<test>2</test>
<test>3</test>
<test>4</test>
<test>5</test>

关键词 at 可用于计算迭代:

for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>

结果:
<book>1. Everyday Italian</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>

在 for 语句(order by也一样)中同样允许多个 in 表达式。请使用逗号来分割每一个 in 表达式:

for $x in (10,20), $y in (100,200)
return <test>x={$x} and y={$y}</test>

结果:
<test>x=10 and y=100</test>
<test>x=10 and y=200</test>
<test>x=20 and y=100</test>
<test>x=20 and y=200</test>
11. let语句
let 语句可完成变量分配,并可避免多次重复相同的表达式。let 语句不会导致迭代。

let $x := (1 to 5)
return <test>{$x}</test>结果:

<test>1 2 3 4 5</test>
分享到:
评论

相关推荐

    javascript-xpath-latest.js

    1. 更换默认的xpath库 除了ie,其他主要浏览器都是内置对xpath的支持的,但ie不行,所以selenium 使用了javascript库,默认使用的是ajaxslt,这个会比较慢,可以换成 javascript-xpath, 虽然比firefox还是慢...

    perl-XML-XPath-1.42-3.el8.noarch(1).rpm

    官方离线安装包,亲测可用

    wicked-good-xpath, 纯JS实现DOM级别 3 XPath规范.zip

    wicked-good-xpath, 纯JS实现DOM级别 3 XPath规范 很好的XPath Wicked XPath是谷歌编写的DOM级别 3 XPath规范的纯JavaScript实现。 它为每个浏览器中的HTML文档启用XPath评估。 我们相信它是JavaScript中最快的XPath...

    perl-XML-XPath-1.13-22.el7.noarch.rpm

    离线安装包,亲测可用

    google-xpath提取器插件

    标题中的“google-xpath提取器插件”是指一个专门用于网页元素XPath路径提取的工具,它可以帮助用户方便地从Google浏览器中获取XML Path Language(XPath)表达式。XPath是一种在XML文档中查找信息的语言,常用于...

    WebDriver-xpath和WebDriver-Css学习

    4. **复杂定位**:了解如何处理嵌套元素、动态生成的元素以及使用通配符选择多个元素。 5. **优化与性能**:对比XPath和Css在性能上的差异,学习如何优化选择器以提高测试执行速度。 6. **实战应用**:通过实际项目...

    24期爬虫-03-xpath数据解析-邓苏杭-歌曲排名.py

    24期爬虫-03-xpath数据解析-邓苏杭-歌曲排名.py

    24期爬虫-03-xpath数据解析1-陈麟.py

    24期爬虫-03-xpath数据解析1-陈麟.py

    PyPI 官网下载 | py_dom_xpath_six-0.2.4-py3-none-any.whl

    **PyPI 官网下载 | py_dom_xpath_six-0.2.4-py3-none-any.whl** PyPI(Python Package Index)是Python开发者最重要的资源库,它提供了大量开源的Python软件包,使得开发者可以方便地下载和安装这些包,以增强其...

    uiautomatorviewer ------ xpath 版

    uiautomatorviewer 的增强版,能定位控件 xpath 路径,便于后续项目使用 用法: 将压缩包中的 jar 包替换掉原 uiautomatorviewer 的 jar 包,原 jar 包一般在 sdk\tools\lib 中,注意:jar 包名称需更改为原 jar 包...

    JSTL-XML-Xpath

    在"JSTL-XML-Xpath"这个主题中,我们可以看到JSTL是如何集成XML处理和XPath查询的。JSTL的`&lt;c:import&gt;`和`&lt;x:parse&gt;`标签用于导入XML文档并将其解析为JDOM或DOM对象。接着,`&lt;x:path&gt;`标签可以用来执行XPath表达式,...

    Ruto - XPath Finder-crx插件

    -包括20多种XPath模式的构建选择器-基于父子轴的动态XPath-允许您将所选的XPath复制到IDE-提供驱动程序命令和POM(基于输入的页面对象模型摘要)XPath,如下所示:1 。id 2.链接文本3.部分链接文本4.基于属性的XPath...

    XML - 实验(3) -- XPath & XSLT

    《XML》实验任务书 【3】 XPath & XSLT [实验目的] 1、学习如何使用XMLSPY集成开发环境执行XPath查询、以及XSLT的数据转换。 2、理解XPath的类型系统和序列类型等相关概念,掌握XPath表达式... xslt、xmpQ4. xslt。

    sxd-xpath — Rust中的XPath库-Rust开发

    xpath-XPath 1.0表达式的实现。 也有一些分散的实用程序可在命令行中播放。 将来,我希望增加对XSLT 1.0的支持。 目标这个项目有一个崇高的目标:替换libxml和libxslt。 为它贡献力量...

    css-xpath-converter:简单的在线工具,可从CSSXPath转换为

    "css-xpath-converter"就是一个这样的在线工具,它允许用户方便地将CSS选择器转换为XPath表达式,反之亦然。 1. **CSS选择器**: - CSS选择器是CSS中的语法结构,用于匹配HTML或XML文档中的元素。例如,`#id`选择...

    js-xpath:XPath Parser for Javascript

    js-xpath 使用Jison解析器/生成器JavaScript的XPath解析器/生成器。 演示版 有关解析xpath表达式的非常简单的用法,请参见文件。 用法 首先在文档中包含库以及xpath.js和models.js文件。 然后尝试以下操作以开始...

    json-xpath:在JSON文档上提供XPath支持

    `json-xpath-master`压缩包可能包含了`json-xpath`库的源代码,包括实现、测试案例以及相关的文档。通过查看这些源代码,开发者可以深入理解其工作原理,甚至可以根据需要对其进行定制或扩展。 总之,`json-xpath`...

    cypress-xpath:将XPath命令添加到赛普拉斯测试运行器

    将XPath命令添加到测试运行程序 用npm安装 npm install -D cypress-xpath 用纱安装 yarn add cypress-xpath --dev 然后将其包含在您项目的cypress/support/index.js require ( 'cypress-xpath' ) 使用 安装后,您的...

    Chrome插件-XPath Helper 完成Bing每日壁纸的小爬虫.zip

    4. **爬取壁纸**:最后,可以利用获取到的图片URL下载壁纸,完成爬虫的目标。 对于这个Bing每日壁纸的案例,可能的步骤包括: 1. 使用XPath Helper找到图片元素的XPath,例如:`//img[@class='some-class']`。 2. ...

Global site tag (gtag.js) - Google Analytics