本主題回顧整個(gè) XPath 參考中出現(xiàn)的語(yǔ)法示例。所有示例均基于 XPath 語(yǔ)法的示例 XML 文件 (inventory.xml)。有關(guān)在測(cè)試文件中使用 XPath 表達(dá)式的示例,請(qǐng)參見(jiàn)本主題最后的“聯(lián)合 ( | ) 示例”。
表達(dá)式 | 引用 |
---|---|
XML
復(fù)制
./author | 當(dāng)前上下文中的所有 <author> 元素。注意,此表達(dá)式等效于下一行中的表達(dá)式。 |
XML
復(fù)制
author | 當(dāng)前上下文中的所有 <author> 元素。 |
XML
復(fù)制
first.name | 當(dāng)前上下文中的所有 <first.name> 元素。 |
XML
復(fù)制
/bookstore | 本文檔的文檔元素 (<bookstore>)。 |
XML
復(fù)制
//author | 文檔中的所有 <author> 元素。 |
XML
復(fù)制
book[/bookstore/@specialty = @style] | style 屬性值等于文檔根目錄的 <bookstore> 元素的 specialty 屬性值的所有 <book> 元素。 |
XML
復(fù)制
author/first-name | 屬于 <author> 元素的子級(jí)的所有 <first-name> 元素。 |
XML
復(fù)制
bookstore//title | <bookstore> 元素中更深的一級(jí)或多級(jí)(任意子代)的所有 <title> 元素。注意,此表達(dá)式不同于下一行中的表達(dá)式。 |
XML
復(fù)制
bookstore/*/title | 屬于 <bookstore> 元素的孫級(jí)的所有 <title> 元素。 |
XML
復(fù)制
bookstore//book/excerpt//emph | <book> 元素的 <excerpt> 子級(jí)中的任意位置和 <bookstore> 元素中的任意位置的所有 <emph> 元素。 |
XML
復(fù)制
.//title | 當(dāng)前上下文中更深的一級(jí)或多級(jí)的所有 <title> 元素。注意,本質(zhì)上只有這種情況需要句點(diǎn)表示法。 |
XML
復(fù)制
author/* | 屬于 <author> 元素的子級(jí)的所有元素。 |
XML
復(fù)制
book/*/last-name | 屬于 <book> 元素的孫級(jí)的所有 <last-name> 元素。 |
XML
復(fù)制
*/* | 當(dāng)前上下文的所有孫級(jí)元素。 |
XML
復(fù)制
*[@specialty] | 具有 specialty 屬性的所有元素。 |
XML
復(fù)制
@style | 當(dāng)前上下文的 style 屬性。 |
XML
復(fù)制
price/@exchange | 當(dāng)前上下文中 <price> 元素的 exchange 屬性。 |
XML
復(fù)制
price/@exchange/total | 返回空節(jié)點(diǎn)集,因?yàn)閷傩圆话刈蛹?jí)。XML 路徑語(yǔ)言 (XPath) 語(yǔ)法允許使用此表達(dá)式,但是嚴(yán)格意義上講無(wú)效。 |
XML
復(fù)制
book[@style] | 當(dāng)前上下文的具有 style 屬性的所有 <book> 元素。 |
XML
復(fù)制
book/@style | 當(dāng)前上下文的所有 <book> 元素的 style 屬性。 |
XML
復(fù)制
@* | 當(dāng)前元素上下文的所有屬性。 |
XML
復(fù)制
./first-name | 當(dāng)前上下文節(jié)點(diǎn)中的所有 <first-name> 元素。注意,此表達(dá)式等效于下一行中的表達(dá)式。 |
XML
復(fù)制
first-name | 當(dāng)前上下文節(jié)點(diǎn)中的所有 <first-name> 元素。 |
XML
復(fù)制
author[1] | 當(dāng)前上下文節(jié)點(diǎn)中的第一個(gè) <author> 元素。 |
XML
復(fù)制
author[first-name][3] | 具有 <first-name> 子級(jí)的第三個(gè) <author> 元素。 |
XML
復(fù)制
my:book | my 命名空間中的 <book> 元素。 |
XML
復(fù)制
my:* | my 命名空間中的所有元素。 |
XML
復(fù)制
@my:* | my 命名空間中的所有屬性(不包括 my 命名空間中的元素的未限定屬性)。 |
注意,索引相對(duì)于父級(jí)??紤]以下數(shù)據(jù):
<x> <y/> <y/> </x> <x> <y/> <y/> </x>
表達(dá)式 | 引用 |
---|---|
XML
復(fù)制
x/y[1] | 每個(gè) <x> 的第一個(gè) <y> 子級(jí)。此表達(dá)式等效于下一行中的表達(dá)式。 |
XML
復(fù)制
x/y[position() = 1] | 每個(gè) <x> 的第一個(gè) <y> 子級(jí)。 |
XML
復(fù)制
(x/y)[1] | <x> 元素的整個(gè) <y> 子級(jí)元素集中的第一個(gè) <y>。 |
XML
復(fù)制
x[1]/y[2] | 第一個(gè) <x> 的第二個(gè) <y> 子級(jí)。 |
其他示例引用 XPath 的示例 XML 文件。
表達(dá)式 | 引用 |
---|---|
book[last()] | 當(dāng)前上下文節(jié)點(diǎn)的最后一個(gè) <book> 元素。 |
XML
復(fù)制
book/author[last()] | 當(dāng)前上下文節(jié)點(diǎn)的每個(gè) <book> 元素的最后一個(gè) <author> 子級(jí)。 |
XML
復(fù)制
(book/author)[last()] | 當(dāng)前上下文節(jié)點(diǎn)的 <book> 元素的整個(gè) <author> 子級(jí)元素集中的最后一個(gè) <author> 元素。 |
XML
復(fù)制
book[excerpt] | 至少包含一個(gè) <excerpt> 元素子級(jí)的所有 <book> 元素。 |
XML
復(fù)制
book[excerpt]/title | 屬于 <book> 元素(也至少包含一個(gè) <excerpt> 元素子級(jí))的子級(jí)的所有 <title> 元素。 |
XML
復(fù)制
book[excerpt]/author[degree] | 至少包含一個(gè) <degree> 元素子級(jí)并且屬于 <book> 元素(也至少包含一個(gè) <excerpt> 元素)子級(jí)的所有 <author> 元素。 |
XML
復(fù)制
book[author/degree] | 所有包含 <author> 子級(jí)的 <book> 元素,該子級(jí)至少包含一個(gè) <degree> 子級(jí)。 |
XML
復(fù)制
author[degree][award] | 至少包含一個(gè) <degree> 元素子級(jí)以及至少包含一個(gè) <award> 元素子級(jí)的所有 <author> 元素。 |
XML
復(fù)制
author[degree and award] | 至少包含一個(gè) <degree> 元素子級(jí)以及至少包含一個(gè) <award> 元素子級(jí)的所有 <author> 元素。 |
XML
復(fù)制
author[(degree or award) and publication] | 至少包含一個(gè) <degree> 或 <award> 以及至少包含一個(gè) <publication> 子級(jí)的所有 <author> 元素。 |
XML
復(fù)制
author[degree and not(publication)] | 至少包含一個(gè) <degree> 元素子級(jí)并且不包含 <publication> 元素子級(jí)的所有 <author> 元素。 |
XML
復(fù)制
author[not(degree or award) and publication] | 至少包含一個(gè) <publication> 元素子級(jí)并且不包含 <degree> 和 <award> 元素子級(jí)的所有 <author> 元素。 |
author[last-name = 'Bob'] | 至少包含一個(gè)值為 Bob 的 <last-name> 元素子級(jí)的所有 <author> 元素。 |
XML
復(fù)制
author[last-name[1] = 'Bob'] | 第一個(gè) <last-name> 子元素的值為 Bob 的所有 <author> 元素。注意,此表達(dá)式等效于下一行中的表達(dá)式。 |
XML
復(fù)制
author[last-name [position()=1]= 'Bob'] | 第一個(gè) <last-name> 子元素的值為 Bob 的所有 <author> 元素。 |
XML
復(fù)制
degree[@from != 'Harvard'] | from 屬性不等于 'Harvard' 的所有 <degree> 元素。 |
XML
復(fù)制
author[. = 'Matthew Bob'] | 所有值為 Matthew Bob 的 <author> 元素。 |
XML
復(fù)制
author[last-name = 'Bob' and ../price > 50]
| 包含值為 Bob 的 <last-name> 子元素以及值大于 50 的 <price> 同輩元素的所有 <author> 元素。 |
XML
復(fù)制
book[position() <= 3]
| 前三本書(shū)(1、2、3)。 |
XML
復(fù)制
author[not(last-name = 'Bob')] | 不包含值為 Bob 的 <last-name> 子元素的所有 <author> 元素。 |
XML
復(fù)制
author[first-name = 'Bob'] | 至少包含一個(gè)值為 Bob 的 <first-name> 元素的所有 <author> 元素。 |
XML
復(fù)制
author[* = 'Bob'] | 所有包含任何值為 Bob 的子元素的 author 元素。 |
XML
復(fù)制
author[last-name = 'Bob' and first-name = 'Joe'] | 所有包含值為 Bob 的 <last-name> 子元素和值為 Joe 的 <first-name> 子元素的 <author> 元素。 |
XML
復(fù)制
price[@intl = 'Canada'] | 上下文節(jié)點(diǎn)中所有 intl 屬性等于 'Canada' 的 <price> 元素。 |
XML
復(fù)制
degree[position() < 3]
| 屬于上下文節(jié)點(diǎn)子級(jí)的前兩個(gè) <degree> 元素。 |
XML
復(fù)制
p/text()[2] | 上下文節(jié)點(diǎn)中每個(gè) <p> 元素的第二個(gè)文本節(jié)點(diǎn)。 |
XML
復(fù)制
ancestor::book[1] | 與上下文節(jié)點(diǎn)最接近的 <book> 上級(jí)。 |
XML
復(fù)制
ancestor::book[author][1] | 與上下文節(jié)點(diǎn)最接近的 <book> 上級(jí),并且此 <book> 元素包含 <author> 元素子級(jí)。 |
XML
復(fù)制
ancestor::author[parent::book][1] | 當(dāng)前上下文中最接近的 <author> 上級(jí),并且此 <author> 元素是 <book> 元素的子級(jí)。 |
為了演示 union 運(yùn)算,我們使用以下 XPath 表達(dá)式:
x | y/x
在以下 XML 文件中選擇所有值為 green 或 blue 的 <x> 元素:
<?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>
<?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
聯(lián)系客服