【转】XPath 示例
XPath 示例
本主题回顾整个 XPath 参考中出现的语法示例。 所有示例均基于 XPath 语法的示例 XML 文件 (inventory.xml)。 有关在测试文件中使用 XPath 表达式的示例,请参见本主题最后的“联合 ( | ) 示例”。
|
Expression |
引用 |
|---|---|
|
./author |
当前上下文中的所有 <author> 元素。 注意,此表达式等效于下一行中的表达式。 |
|
author |
当前上下文中的所有 <author> 元素。 |
|
first. name |
当前上下文中的所有 <first.name> 元素。 |
|
/bookstore |
此文档的文档元素 (<bookstore>)。 |
|
//author |
文档中的所有 <author> 元素。 |
|
book[/bookstore/@specialty=@style] |
style 属性值等于文档根处 <bookstore> 元素的specialty 属性值的所有 <book> 元素。 |
|
author/first-name |
作为 <author> 元素子级的所有 <first-name> 元素。 |
|
bookstore//title |
<bookstore> 元素中一级或多级深度的所有 <title> 元素(任意后代)。 注意,此表达式不同于下一行中的表达式。 |
|
bookstore/*/title |
作为 <bookstore> 元素的孙代的所有 <title> 元素。 |
|
bookstore//book/excerpt//emph |
位于 <book> 元素的 <excerpt> 子级内任意位置和位于<bookstore> 元素内任意位置的所有 <emph> 元素。 |
|
.//title |
当前上下文中一级或多级深度的所有 <title> 元素。 注意,本质上只有这种情况需要句点表示法。 |
|
author/* |
作为 <author> 元素子级的所有元素。 |
|
book/*/last-name |
作为 <book> 元素的孙代的所有 <last-name> 元素。 |
|
*/* |
当前上下文的所有孙级元素。 |
|
*[@specialty] |
具有 specialty 属性的所有元素。 |
|
@style |
当前上下文的 style 属性。 |
|
price/@exchange |
当前上下文中 <price> 元素上的 exchange 属性。 |
|
price/@exchange/total |
返回空节点集,因为属性不包含元素子级。 XML 路径语言 (XPath) 语法允许使用此表达式,但是严格意义上讲无效。 |
|
book[@style] |
当前上下文的具有 style 属性的 <book> 所有元素。 |
|
book/@style |
当前上下文的所有 <book> 元素的 style 属性。 |
|
@* |
当前元素上下文的所有属性。 |
|
./first-name |
当前上下文节点中的所有 <first-name> 元素。 注意,此表达式等效于下一行中的表达式。 |
|
first-name |
当前上下文节点中的所有 <first-name> 元素。 |
|
author[1] |
当前上下文节点中的第一个 <author> 元素。 |
|
author[first-name][3] |
具有 <first-name> 子级的第三个 <author> 元素。 |
|
my:book |
my 命名空间中的 <book> 元素。 |
|
my:* |
my 命名空间中的所有元素。 |
|
@my:* |
my 命名空间中的所有属性(不包括 my 命名空间中的元素的未限定属性)。 |
注意,索引相对于父级。 考虑以下数据:
<x>
<y/>
<y/>
</x>
<x>
<y/>
<y/>
</x>
|
Expression |
引用 |
|---|---|
|
x/y[1] |
每个 <x> 的第一个 <y> 子级。 此表达式等效于下一行中的表达式。 |
|
x/y[position() = 1] |
每个 <x> 的第一个 <y> 子级。 |
|
(x/y)[1] |
<x> 元素的整个 <y> 子级集合中的第一个 <y>。 |
|
x[1]/y[2] |
第一个 <x> 的第二个 <y> 子级。 |
其他示例引用 XPath 的示例 XML 文件。
|
Expression |
引用 |
|---|---|
|
book[last()] |
前上下文节点的最后一个 <book> 元素。 |
|
book/author[last()] |
前上下文节点的每个 <book> 元素的最后一个<author> 子级。 |
|
(book/author)[last()] |
当前上下文节点的 <book> 元素的整个 <author> 子级集合中的最后一个 <author> 元素。 |
|
book[excerpt] |
包含至少一个 <excerpt> 元素子级的所有 <book> 元素。 |
|
book[excerpt]/title |
作为 <book> 元素子级,同时包含至少一个 <excerpt>元素子级的所有 <title> 元素。 |
|
book[excerpt]/author[degree] |
包含至少一个 <degree> 元素子级,并作为同样包含至少一个 <excerpt> 元素的 <book> 元素的子级的所有<author> 元素。 |
|
book[author/degree] |
包含 <author> 子级,这些子级又包含至少一个<degree> 子级的所有 <book> 元素 |
|
author[degree][award] |
包含至少一个 <degree> 元素子级和至少一个 <award>元素子级的所有 <author> 元素。 |
|
author[degree and award] |
包含至少一个 <degree> 元素子级和至少一个 <award>元素子级的所有 <author> 元素。 |
|
author[(degree or award) and publication] |
包含至少一个 <degree> 或 <award> 和至少一个<publication> 作为子级的所有 <author> 元素。 |
|
author[degree and not(publication)] |
包含至少一个 <degree> 元素子级并且不包含<publication> 元素子级的所有 <author> 元素。 |
|
author[not(degree or award) and publication] |
包含至少一个 <publication> 元素子级,但不包含<degree> 或 <award> 元素子级的所有 <author> 元素。 |
|
author[last-name = "Bob"] |
包含至少一个值为 Bob 的 <last-name> 元素子级的所有 <author> 元素。 |
|
author[last-name[1] = "Bob"] |
第一个 <last-name> 子元素的值为 Bob 的所有<author> 元素。 注意,此表达式等效于下一行中的表达式。 |
|
author[last-name [position()=1]= "Bob"] |
第一个 <last-name> 子元素的值为 Bob 的所有<author> 元素。 |
|
degree[@from != "Harvard"] |
from 属性不等于 "Harvard" 的所有 <degree> 元素。 |
|
author[. = "Matthew Bob"] |
值为 Matthew Bob 的所有 <author> 元素。 |
|
author[last-name = "Bob" and ../price > 50] |
包含值为 Bob 的 <last-name> 子元素和值大于 50 的<price> 同级元素的所有 <author> 元素。 |
|
book[position() <= 3] |
前三本书(1、2、3)。 |
|
author[not(last-name = "Bob")] |
不包含值为 Bob 的 <last-name> 子元素的所有<author> 元素。 |
|
author[first-name = "Bob"] |
至少有一个值为 Bob 的 <first-name> 子级的所有<author> 元素。 |
|
author[* = "Bob"] |
所有包含任何值为 Bob 的子元素的 author 元素。 |
|
author[last-name = "Bob" and first-name = "Joe"] |
具有值为 Bob 的 <last-name> 子元素和值为 Joe 的<first-name> 子元素的所有 <author> 元素。 |
|
price[@intl = "Canada"] |
上下文节点中 intl 属性等于 "Canada" 的所有 <price>元素。 |
|
degree[position() < 3] |
作为上下文节点子级的前两个 <degree> 元素。 |
|
p/text()[2] |
上下文节点中每个 <p> 元素的第二个文本节点。 |
|
ancestor::book[1] |
上下文节点最近的 <book> 上级。 |
|
ancestor::book[author][1] |
上下文节点最近的 <book> 上级,并且此 <book> 元素具有 <author> 元素作为其子级。 |
|
ancestor::author[parent::book][1] |
当前上下文最近的 <author> 上级,并且此 <author>元素是 <book> 元素的子级。 |
为了演示 union 运算,我们使用以下 XPath 表达式:
x | y/x
在以下 XML 文件中选择所有值为 green 或 blue 的 <x> 元素:
XML 文件 (data1.xml)
<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="union.xsl"?>
<root>
<x>green</x>
<y>
<x>blue</x>
<x>blue</x>
</y>
<z>
<x>red</x>
<x>red</x>
</z>
<x>green</x>
</root>
XSLT 文件 (union.xsl)
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="root">
<xsl:for-each select="x | y/x">
<xsl:value-of select="."/>,
<xsl:if test="not(position()=last())">,</xsl:if>
</xsl:for-each>
</xsl:template> </xsl:stylesheet>
格式化输出
green,blue,blue,green
处理器输出
<?xml version="1.0" encoding="UTF-16"?>green,blue,blue,green
【转】XPath 示例的更多相关文章
- XPath语法 在C#中使用XPath示例 【转http://www.cnblogs.com/yukaizhao/archive/2011/07/25/xpath.html】非常详细的文章
XPath语法 在C#中使用XPath示例 XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识. 示例Xml: <?xml ve ...
- XPath语法 在C#中使用XPath示例
XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识. 示例Xml: <?xml version="1.0" en ...
- C#操作Xml:XPath语法 在C#中使用XPath示例
XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识. 示例Xml: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- xPath 用法总结整理
xPath 用法总结整理 一.xpath介绍 XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. XPath 使用路径表达式在 XML ...
- odoo 开发基础 -- 视图之xpath语法
odoo 视图函数 在整个项目文件中,结构并不是十分明显,虽然它也遵循MVC设计,类比django的MTV模式,各个模块区分的十分明显,在Odoo中,视图的概念不是特别明显,很多时候,我们会将调用模型 ...
- scrapy简单入门及选择器(xpath\css)
简介 scrapy被认为是比较简单的爬虫框架,资料比较齐全,网上也有很多教程.官网上介绍了它的四种安装方法,PyPI.Conda.APT.Source,我们只介绍最简单的安装方法. 安装 Window ...
- 爬虫入门之爬取策略 XPath与bs4实现(五)
爬虫入门之爬取策略 XPath与bs4实现(五) 在爬虫系统中,待抓取URL队列是很重要的一部分.待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪 ...
- 最完美的xslt数值函数与字符串函数(转)
http://www.cnblogs.com/guoxu/articles/1744007.html 任何的编程语言或者是SQL语句都有内置的函数或方法,而强大灵活的xslt技术也是如此.熟练掌握XS ...
- HtmlAgilityPack相关网页
//多线程 http://www.cnblogs.com/jiangming/archive/2012/09/11/MultiThreadCallWebbrowser.html //替换Webbrow ...
随机推荐
- SSH免密码登录过程解析和实现
SSH 为建立在应用层和传输层基础上的安全协议.SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用SSH 协议可以有效防止远程管理过程中的信息泄露问题. 从客户端来看,SSH提 ...
- MyBank(自助银行)系统
光阴似箭,岁月如梭. 从开始学Java到现在学C#已快四个月了,我们学的东西越来越多了.但是虽说学到现在,都不知道有什么用?没地方表现啊. 那么今天我就来给大家说说说这些东西的用处吧. 就拿MyBan ...
- 使用<link> 标签定义浏览器标题栏小图标
使用link标签的rel属性,设置成icon.同时设置href属性值为小图标图片的url. <link rel=" icon " href="image/icon. ...
- MasonJS – 创建完美的砌体结构网页布局
MasonJS 插件用来解决目前大多数的网格系统使用中的问题——间距.当使用 Masonry,Isotope 或任何其他网格插件时,布局中会出现空白或边缘参差不齐的情况.MasonJS 可以帮助你填补 ...
- 使用gulp来构建一个前端项目
什么是gulp? gulp是一个前端项目构建工具,是自动化项目的构建利器,它不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成.你可以使用gulp及其插件对你的项目代码 ...
- ae动态显示属性表————切记DataTable中要先Add(row)之后再往里传值。
public partial class FrmAttributeTable : Form { private AxMapControl m_MapCtl; public FrmAttributeTa ...
- vbs操作excel
航天金税系统升级,导出的Excel文件格式与原来有的差异,老的数据导入程序识别不了该文件,对比了新老文件后,发现新文件在专票和普票的“份数”行前增加了一行,同时增加了“单据号”列,通过脚本 把这些删除 ...
- AFNetworking二次封装的那些事
AFNetworking可是iOS网络开发的神器,大大简便了操作.不过网络可是重中之重,不能只会用AFNetworking.我觉得网络开发首先要懂基本的理论,例如tcp/ip,http协议,之后要了解 ...
- iOS开源项目MobileProject功能点介绍
一:MobileProject简介 MobileProject项目是一个以MVC模式搭建的开源功能集合,基于Objective-C上面进行编写,意在解决新项目对于常见功能模块的重复开发,MobileP ...
- 【Android】中兴ZTE sdcard路径的问题
测试机: ZTE U950 现象: 用Environment.getExternalStorageDirectory()取到的路径是/mnt/sdcard 真相: /mnt/sdcard/是一个空文件 ...