<?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book> <book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book> </bookstore> |
表达式 | 描述 | 节点名 | 选择所有该名称的节点集 | / | 选择根节点 | // | 选择当前节点下的所有节点 | . | 选择当前节点 | .. | 选择父节点 | @ | 选择属性 |
示例
表达式 | 描述 | bookstore | 选择所有bookstore子节点 | /bookstore | 选择根节点bookstore | bookstore/book | 在bookstore的子节点中选择所有名为book的节点 | //book | 选择xml文档中所有名为book的节点 | bookstore//book | 选择节点bookstore下的所有名为book为节点 | //@lang | 选择所有名为lang的属性 |
断言
在方括号中[],用来更进一步定位选择的元素
表达式 | 描述 | /bookstore/book[1] | 选择根元素bookstore的book子元素中的第一个 注意: IE5以上浏览器中第一个元素是0 | /bookstore/book[last()] | 选择根元素bookstore的book子元素中的最后一个 | /bookstore/book[last()-1] | 选择根元素bookstore的book子元素中的最后第二个 | /bookstore/book[position()<3] | 选择根元素bookstore的book子元素中的前两个 | //title[@lang] | 选择所有拥有属性lang的titile元素 | //title[@lang='eng'] | 选择所有属性值lang为eng的title元素 | /bookstore/book[price>35.00] | 选择根元素bookstore的book子元素中那些拥有price子元素且值大于35的 | /bookstore/book[price>35.00]/title | 选择根元素bookstore的book子元素中那些拥有price子元素且值大于35的title子元素 |
选择位置的节点
通配符 | 描述 | * | 匹配所有元素 | @* | 匹配所有属性节点 | node() | 匹配任何类型的节点 |
示例
表达式 | 描述 | /bookstore/* | 选择根元素bookstore的下的所有子元素 | //* | 选择文档中所有元素 | //title[@*] | 算则所有拥有属性的title元素 |
使用操作符“|”组合选择符合多个path的表达式
|
XML示例文档
<?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book> <book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book> </bookstore> |
XPath 轴
An axis defines a node-set relative to the current node.
名称 | 描述 |
ancestor | 选择所有当前元素的上级(父元素,爷爷元素...) |
ancestor-or-self | 选择所有父元素和本身 |
attribute | 选择当前元素的所有属性 |
child | 选择当前节点的所有子节点 |
descendant | 选择所有当前节点的儿孙节点 |
descendant-or-self | 选择所有当前节点的儿孙节点和本身 |
following | 选择文档中当前节点闭合标签之后的所有内容 |
following-sibling | 选择当前标签后的兄弟节点 |
namespace | 选择当前节点的所有命名空间元素 |
parent | 选择当前节点的父节点 |
preceding | 选择文档中当前节点开始标签前的所有内容 |
preceding-sibling | 选择当前标签前的兄弟节点 |
self | 选择自己 |
Location Path Expression
绝对路径: /step/step/... 相对路径: step/step/... |
示例
示例 | 结果 |
child::book | 当前节点下的BOOK节点 |
attribute::lang | 当前节点的lang属性 |
child::* | 当前节点下的所有节点 |
attribute::* | 当前节点下的所有属性 |
child::text() | 当前节点的文本内容 |
child::node() | 当前节点的所有子节点 |
descendant::book | 当前节点所有book下代节点(包括儿子孙子...) |
ancestor::book | 当前节点所有book上代节点(包括爸爸爷爷...) |
ancestor-or-self::book | 当前节点所有book上代节点和本身(如果本很是book节点) |
child::*/child::price | 当前节点的所有price孙子节点(仅仅是孙子) |
XPATH操作符
操作符 | 描述 | 示例 | 结果 | | | 组合两个路径式 | //book | //cd | Returns a node-set with all book and cd elements | + | 加 | 6 + 4 | 10 | - | 减 | 6 - 4 | 2 | * | 乘 | 6 * 4 | 24 | div | 除 | 8 div 4 | 2 | = | 等于 | price=9.80 | true if price is 9.80 false if price is 9.90 | != | 不等 | price!=9.80 | true if price is 9.90 false if price is 9.80 | < | 小于 | price<9.80 | true if price is 9.00 false if price is 9.80 | <= | 小于等于 | price<=9.80 | true if price is 9.00 false if price is 9.90 | > | 大于 | price>9.80 | true if price is 9.90 false if price is 9.80 | >= | 大于等于 | price>=9.80 | true if price is 9.90 false if price is 9.70 | or | 或 | price=9.80 or price=9.70 | true if price is 9.80 false if price is 9.50 | and | 和 | price>9.00 and price<9.90 | true if price is 9.80 false if price is 8.50 | mod | 求余 | 5 mod 2 | 1 |
|