XPath:修订间差异
无编辑摘要 |
无编辑摘要 |
||
第26行: | 第26行: | ||
}} | }} | ||
== | ==路径表达式== | ||
路径表达式可以用于定位树中的节点。 | |||
{{了解更多 | |||
|[https://www.w3.org/TR/xpath-30/#id-path-expressions W3C:XPath 3.0 - 路径表达式] | |||
}} | |||
===轴描述=== | ===轴描述=== | ||
第34行: | 第37行: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! 名称 !! 描述 !! 示例 | ||
|- | |- | ||
| attribute || 选取元素的属性,可使用<code>@</code>来缩写 || <code>/bookstore/book/attribute::price</code> | | attribute || 选取元素的属性,可使用<code>@</code>来缩写 || <code>/bookstore/book/attribute::price</code> | ||
第63行: | 第66行: | ||
|} | |} | ||
{{了解更多 | |||
|[https://www.w3.org/TR/xpath-30/#axes W3C:XPath 3.0 - 轴描述] | |||
}} | |||
===节点测试 === | |||
{| class="wikitable" | |||
|- | |||
! 名称 !! 描述 !! 示例 | |||
|- | |||
| node() || 选取所有类型的节点 || <code>//node()</code> | |||
|- | |||
| text() || 选取文本节点 || <code>//text()</code> | |||
|- | |||
| element() || 选取元素节点 || <code>//element()</code> | |||
|- | |||
| attribute() || 选取属性节点 || <code>//attribute()</code> | |||
|- | |||
| comment() || 选取注释节点 || <code>//comment()</code> | |||
|- | |||
| processing-instruction() || 选取处理指令节点 || <code>//processing-instruction()</code> | |||
|- | |||
| * || 选取所有类型的节点(通配符) || <code>//*</code> | |||
|} | |||
{{了解更多 | |||
|[https://www.w3.org/TR/xpath-30/#node-tests W3C:XPath 3.0 - 节点测试] | |||
}} | |||
===节点描述=== | |||
{{了解更多 | |||
|[ ] | |||
}} | |||
==运算符== | ==运算符== |
2023年11月1日 (三) 09:26的版本
XPath即为XML路径语言(XML Path Language),它是一种查询语言,用来选取XML文档中的内容。XPath是万维网联盟(W3C)标准。
简介
时间轴
- 1999-11-16,W3C发布XPath 1.0。
- 2010-12-14,W3C发布XPath 2.0。
- 2014-04-08,W3C发布XPath 3.0。
- 2017-03-21,W3C发布XPath 3.1。
版本
语法
数据模型
XPath把XML文档看作一棵树(tree),树包含很多节点(nodes),这一模式仅仅是概念性的,并不要求任何具体的实现。节点分为7种类型:
- 根节点
- 单元节点
- 文本节点
- 属性节点
- 命名空间节点
- 处理指令节点
- 注释节点
了解更多 >> W3C:XPath 1.0 - 数据模型
路径表达式
路径表达式可以用于定位树中的节点。
了解更多 >> W3C:XPath 3.0 - 路径表达式
轴描述
轴描述,通过XML文件分支树的浏览方向定位。
名称 | 描述 | 示例 |
---|---|---|
attribute | 选取元素的属性,可使用@ 来缩写 |
/bookstore/book/attribute::price
|
child | 子节点,选取当前元素的所有子元素,可以省略不写。 | /bookstore/book /bookstore/child::text() 选取当前节点的所有文本子节点。
|
parent | 父节点,选取当前元素的父元素,可以用 .. 来缩写 |
/bookstore/parent::node()
|
ancestor | 祖先节点,选取当前元素的所有祖先元素,按层级从近到远 | /bookstore/book/ancestor::bookstore
|
ancestor-or-self | 自身及祖先节点,选取当前元素的所有祖先元素以及自身,按层级从近到远 | /bookstore/book/ancestor-or-self::bookstore
|
following-sibling | 之后同级节点,选取当前元素之后的所有同级元素 | /bookstore/book/following-sibling::book
|
preceding-sibling | 之前同级节点,选取当前元素之前的所有同级元素 | /bookstore/book/preceding-sibling::book
|
following | 下文节点,在此节点后的所有完整节点,即不包含其祖先节点 | /bookstore/book/following::book
|
preceding | 前文节点,在此节点前的所有完整节点,即不包含其子孙节点 | /bookstore/book/preceding::book
|
descendant | 选取当前元素的所有后代元素,按层级从近到远 | /bookstore/descendant::book 选取当前节点的所有 book 后代。
|
descendant-or-self | 选取当前元素的所有后代元素以及自身,按层级从近到远 | /bookstore/descendant-or-self::bookstore
|
self | 自己,选取当前元素本身,可以用 . 来缩写 |
/bookstore/self::bookstore
|
namespace | 名称空间,选取元素的命名空间 | /bookstore/book/namespace::*
|
了解更多 >> W3C:XPath 3.0 - 轴描述
节点测试
名称 | 描述 | 示例 |
---|---|---|
node() | 选取所有类型的节点 | //node()
|
text() | 选取文本节点 | //text()
|
element() | 选取元素节点 | //element()
|
attribute() | 选取属性节点 | //attribute()
|
comment() | 选取注释节点 | //comment()
|
processing-instruction() | 选取处理指令节点 | //processing-instruction()
|
* | 选取所有类型的节点(通配符) | //*
|
了解更多 >> W3C:XPath 3.0 - 节点测试
节点描述
了解更多 >> [ ]
运算符
函数
资源
官网
- W3C XPath:http://www.w3.org/TR/xpath
- W3C XPath 3.0:https://www.w3.org/TR/xpath-30