常用的XPATH
|
表達式
|
說明
|
|
//
|
表示返回XML文档中的所有符合查找准则的元素,而忽略文档中元素的位置级别
|
|
/
|
表示絕對路徑
|
|
News/Links/name
|
表示相對路徑
|
|
./
|
表示當前節點
|
|
../
|
表示父節點
|
|
*
|
表所所有元素
|
|
or
|
或
|
|
And
|
與
|
|
其它表達式
|
=,!=,<,>,>=,<=
|
|
Text()
|
文本
|
|
Node()
|
節點
|
|
number
last()
|
last 函数返回一个数字,该数字等於从表达式求值上下文中的上下文大小 (即返回節點個數)
|
|
number
position()
|
position函数返回一个数字,该数字等於从表达式求值上下文中的上下文位置(即當前位置)
|
|
number
count(node-set)
|
count 函数返回在参数node-set中节点的个数。
|
|
node-set
id(object)
|
|
|
string
string(object?)
|
string 函数将对象依下列各项转换成字符
|
|
string
concat(string, string, string*)
|
concat 函数返回它的参数的联结。
|
|
boolean
starts-with(string, string)
|
如果第一个字符串参数以第二个字符串参数起头,starts-with 函数返回真,否则,返回假。
|
|
boolean
contains(string, string)
|
如果第一个字符串参数包含第二个字符串参数,contains 函数返回真,否则,返回假。
|
|
string
substring-before(string, string)
|
substring-before 函数返回第一个字符串参数在第二个参数首次出现之前的子字符串,或者,如果第一个字符串参数不包含第二个字符串参数则返回空字符串。例如,substring-before("1999/04/01","/") 返回 1999。
|
|
string
substring-after(string, string)
|
substring-after 函数返回第一个字符串参数在第二个参数首次出现之后的子字符串,或者,如果第一个字符串参数不包含第二个字符串参数则返回空字符串。例如, substring-after("1999/04/01","/") 返回 04/01,而 substring-after("1999/04/01","19") 返回 99/04/01。
|
|
string
substring( string , number , number? )
|
substring 函数返回第一个字符串参数从第二个参数所指定的位置开始,以第三个参数为长度的子字符串。例如, substring("12345",2,3) 返回 "234"。如果没有第三个参数,则返回从第二个参数所指定的位置开始直到结束。例如, substring("12345",2) 返回"2345"。
|
|
number
string-length( string? )
|
string-length 返回字符串中字符的个数。如果参数省略,则缺省为一个上下文节点再转换成字符串,也就是上下文节点的 字串值。
|
|
string
normalize-space(string?)
|
normalize-space 函数返回空白符规范化 后的参数字符串,该规范化是清除领头及结尾的空白字以及用一个空白符替换连续的空白符。空白符字符与 XML 中的产生式 S 所允许的是一样的。如果参数省略,则缺省为一个上下文节点再转换成字符串,也就是上下文节点的 字串值。
|
|
string
translate(string, string, string)
|
translate 函数返回第一个参数的字符串,其中有在第二个参数中出现的字符都被在第三个参数中相对应位置的字符所替换。例如,translate("bar","abc","ABC") 返回字符串 BAr。如果,第二个参数里的字符在第三个参数的相对应位置没有字符(因为第二个参数里的字符串比第三个参数的字符串长),那么,第一个参数里的那个字符将被移去。例如,translate("--aaa--","abc-","ABC") 返回 "AAA"。如果在第二个参数里的字符出现超过一次,那么,第一次的出现决定替换的字符。如果第三个参数里的字符串比第二个参数的字符串长, 那么,多余的字符将被忽略。
|
|
boolean
not(boolean)
|
如果参数为真 not 函数返回真,否则返回假。
|
|
boolean
true()
|
true 函数返回真。
|
|
boolean
false()
|
The false 函数返回假。
|
|
number
number(object?)
|
number 函数参数依下列各项转换成数字
|
|
number
sum(node-set)
|
对於在参数节点集合的每个节点,sum 函数返回节点字串值转换成数字后的和。
|
|
number
floor(number)
|
floor 函数返回不大於参数的整数的最大数 (最接近于正无穷大)
|
|
number
ceiling(number)
|
ceiling 函数返回不小於参数的整数的最小数 (最接近于负无穷大
|
|
number
round(number)
|
round 函数返回最接近于参数的整数。
|
|
//*
|
獲得所有節點
|
|
../*
|
獲得當前節點的父節點的所有節點
|
|
//Links
|
獲得所有的Links節點
|
|
//Links[name=”網易”]
|
獲得子節點name的文本為“網易”的所有Links節點
|
|
//Links[@id=”1”]
|
獲得屬性ID=1的所有Links節點
|
|
//*[name=”新浪”]
|
獲得子節點name的文本為“新浪”的所有節點
|
|
//*[@id=”1”]
|
獲得屬性ID=1的所有節點
|
|
//*[@id]
|
獲得存在屬生ID的所有節點點
|
|
//*[name]
|
獲得存在子節點name的所有節點
|
|
//Links[序號]
|
獲得返回的N個Links節點中的第序號個節點
|
|
//Links[1 or 2]
|
獲得返回的N個Links節點的中第一個和第二個節點
|
|
//*[name=”網易” and @id=”1”]
|
獲得所有子點節name的文本為“網易” 且自己的屬生id=“1”的節點
|
|
//text()
|
選擇所有的正文節點(即葉子節點)
|
|
//Links[position()=last()]
|
獲得返回的N個Links節點中的最後一個節點
等同於//Links[last()]
|
|
//*[contains(name,”新”)]
|
獲得子節點name的文本中包含“新”的所有節點
|
|
//Links[1]
|
獲得返回的N個Links節點中的第一個節點
|
|
//Links[1]/name[1]
|
獲得第一個Links的第一個name節點
|
|
//Links//name
|
獲得所有Links節點下的所有name節點
|
|
//*[@id>1]
|
獲得屬性ID>1的所有節點
|
|
//*[number(@id)+1>1]
|
獲得屬生ID的值加1>1的所有節點
|
|
//*[number(text())>1]
|
獲得文本節點的文本值大於1的所有節點
|
|
//*[(number(text()) mode 2)=1]
|
獲得文本節點的文本值為基數的所有節點
|
|