原帖地址 注意,索引相对于父级。 考虑以下数据: <x> 其他示例引用 XPath 的示例 XML 文件。 ? XSLT 文件 (union.xsl) <
xsl:template
?
match="root">
</
xsl:stylesheet
>
处理器输出
http://msdn.microsoft.com/zh-cn/library/ms256086.aspx
本主题回顾整个 XPath 参考中出现的语法示例。 所有示例均基于?XPath 语法的示例 XML 文件 (inventory.xml)
。 有关在测试文件中使用 XPath 表达式的示例,请参见本主题最后的“联合 ( | ) 示例”。
表达式
引用
./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?命名空间中的元素的未限定属性)。
<y/>
<y/>
</x>
<x>
<y/>
<y/>
</x>
表达式
引用
x/y[1]
每个?<x>?的第一个?<y>?子级。 此表达式等效于下一行中的表达式。
x/y[position() = 1]
每个?<x>?的第一个?<y>?子级。
(x/y)[1]
<x>?元素的整个?<y>?子级集合中的第一个?<y>。
x[1]/y[2]
第一个?<x>?的第二个?<y>?子级。
表达式
引用
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-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
>
<
xsl:stylesheet
?
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform
"
>
<
xsl:for-each
?
select="x | y/x">
<
xsl:value-of
?
select="."/>
,
<
xsl:if
?
test="not(position()=last())">
,</
xsl:if
>
</
xsl:for-each
>
</
xsl:template
>
格式化输出
详细解决方案
XPath 示范
热度:920 发布时间:2012-11-06 14:07:00.0
?
?
?
?
?
??联合 ( | ) 示例
Xml
<
?xml
?
version='1.0'?>
Xml
<
?xml
?
version='1.0'?>
green,blue,blue,green
<?xml version="1.0" encoding="UTF-16"?>green,blue,blue,green
相关解决方案
- xpath 语法!
- XPATH 怎么返回不包含关键字的属性的Html标签
- xpath
- php xPath 解析xml文件 有关问题
- XPath 示范
- (2)XPath 语法
- (3)XPath Axes(坐标轴)
- XPath 术语(1)
- javascript XPath 兑现
- javascript XPath 兑现【补充】
- 请教:xpath,xquery这些技术现在用的多吗
- php xPath 解析xml文件 有关问题
- 从另一个 XPath 结果获取 XPath 结果
- 无法使用 xpath 获取 youtube 视频的持续时间
- 语法错误:XPath 不是合法表达式 一般如何查找和修复 XPath 语法问题
- XPath,XML命名空间和Java
- 如何使用不同的搜索( cssSelector / tag / ClassName )创建元素的 Xpath
- java 软件中main方法无法运行 import com.sun.org.apache.xpath.internal.operations.String;
- Python + Selenium(2.5)- 使用 Xpath 定位元素
- 爬虫知识点(xpath)
- 爬虫数据-Xpath(豆瓣读书小案例)
- 爬虫数据提取-xpath
- python爬虫学习笔记day1 -requests模块,数据解析(正则,bs4,xpath)
- python爬虫之数据解析(XPath)
- xpath-helper的使用
- XPATH,代理IP,JSON数据格式,session
- 网络爬虫,xpath
- xpath 解析html代码
- 爬虫前的小准备--Xpath
- 网络爬虫 xpath