運算式
|
代表意義
|
---|---|
./author
| |
author
|
目前內容中的所有 <author> 項目。
|
first. name
|
目前內容中的所有 <first.name> 項目。
|
/bookstore
|
這份文件的文件項目 (<bookstore>)。
|
//author
|
文件中的所有 <author> 項目。
|
book[/bookstore/@specialty=@style]
|
所有 <book> 項目,其 style 屬性值等於文件根上之 <bookstore> 項目的 specialty 屬性值。
|
author/first-name
|
當做 <author> 項目子系的所有 <first-name> 項目。
|
bookstore//title
| |
bookstore/*/title
|
當做 <bookstore> 項目子系的所有 <title> 項目。
|
bookstore//book/excerpt//emph
|
所有 <emph> 項目,其位於 <book> 項目的 <excerpt> 子系之任何位置,以及 <bookstore> 項目的任何位置。
|
.//title
| |
author/*
|
當做 <author> 項目子系的所有項目。
|
book/*/last-name
|
當做 <book> 項目子系的所有 <last-name> 項目。
|
*/*
|
目前內容的所有孫代項目。
|
*[@specialty]
|
含 specialty 屬性的所有項目。
|
@style
|
目前內容的 style 屬性。
|
price/@exchange
|
目前內容中所有 <price> 項目的 exchange 屬性。
|
price/@exchange/total
| |
book[@style]
|
內含目前內容之 style 屬性的所有 <book> 項目。
|
book/@style
|
目前內容之所有 <book> 項目的 style 屬性。
|
@*
|
目前項目內容的所有屬性。
|
./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>
運算式
|
代表意義
|
---|---|
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 檔範例>。
運算式
|
代表意義
|
---|---|
book[last()]
|
目前內容節點的最後一個 <book> 項目。
|
book/author[last()]
|
目前內容節點中每一個 <book> 項目的最後一個 <author> 子系。
|
(book/author)[last()]
|
最後一個 <author> 項目,其來自目前內容節點之 <book> 項目的整組 <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"]
|
至少包含一個 <last-name> 項目子系 (包含值 Bob) 的所有 <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]
|
內含 <last-name> 子項目 (其值為 Bob) 和 <price> 同層級項目 (其值大於 50) 的所有 <author> 項目。
|
book[position() <= 3]
|
前三本書 (1、2、3)。
|
author[not(last-name = "Bob")]
|
不包含 <last-name> 子項目 (包含值 Bob) 的所有 <author> 項目。
|
author[first-name = "Bob"]
|
至少包含一個 <first-name> 子系 (包含值 Bob) 的所有 <author> 項目。
|
author[* = "Bob"]
|
所有包含值為 Bob 之任何子項目的所有 author 項目。
|
author[last-name = "Bob" and first-name = "Joe"]
|
內含 <last-name> 子項目 (含值 Bob) 和 <first-name> 子項目 (其值為 Joe) 的所有 <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> 項目的子系。
|
為了展示聯集運算,我們使用下列 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