為了整理出可以實現的XPath,我把根DTD相關的兩個內置函數去掉了,Microsoft擴展的11個函數也沒有考慮進去。XPath是一門非圖靈完備的、沒有副作用的、弱類型以及很難看的語言,用于把一個XML的某個節點轉換成一些節點。
Context:上下文。指的是使用指定條件正在搜索的XML路徑的節點。
ContextList:被PREDICATE過濾的列表
UNIT
Name :節點的名字必須是Name
Namespace:* :節點的namespace必須是Namespace
* :任何節點
@Name :節點必須是屬性而且名字必須是Name
@* :任何屬性
comment() :注釋節點
node() :任何節點
text() :文字節點
processing-instruction(Name?) :processing-instruction節點,名字必須是Name(可選)
PREDICATE
XPATH :Context中XPATH非空
VALUE(<|>|=|<=|>=|!=)VALUE :比較操作符
VALUE :位置是VALUE,從1開始
PREDICATE(and|or)PREDICATE :邏輯操作符
not(PREDICATE) :邏輯操作符
VALUE
常數
VALUE(+|-|*|div|mod)VALUE :操作符
(VALUE) :VALUE
count(XPATH) :數目
last() :ContextList的數目
local-name(XPATH?) :返回沒有namespace的名字,沒參數則為ContextList
name(XPATH?) :返回全名,沒參數則為ContextList
position() :Context在ContextList中的位置
concat(Str1,Str2[,Str3…]) :連接字符串
contains(Big,Small) :返回Big中是否出現Small
normalize-space(String) :將String頭尾的空白去掉,中間的連續空白使用一個空格代替
starts-with(Big,Small) :返回Big是否由Small開頭
string(Object) :類型轉換,如果Object為NodeList則將NodeList變為NodeList[1],然后講NodeList所有子節點的值連接起來
string-length(String) :長度
substring(String,Start,Length) :子串
substring-after(Big,Small) :返回Big中位于Small后的部分
substring-before(Big,Small) :返回Big中位于Small之前的部分
translate(A,B,C) :將A中的所有B[i]換成C[i],B[position()>length(C)]換為空字符串
boolean(X) :類型轉換,非0true,非空true
false() :返回false
true() :返回true
ceiling,floor,round(X) :轉換浮點
sum(XPATH) :所有值相加
number(X) :類型轉換,1true0false,其他類型轉string后轉number
XPATH
. :Context
.. :Context的父節點
/ :根節點
/UNIT :根節點中滿足UNIT的子節點,UNIT的Context為根節點
XPATH /UNIT :XPATH中滿足UNIT的子節點,UNIT的Context為NODELIST的其中一項
//UNIT :根節點中滿足UNIT的直接或間接子節點,UNIT的Context為根節點
XPATH //UNIT :XPATH中滿足UNIT的直接或間接子節點,UNIT的Context為XPath的其中一項
(XPATH) :XPATH
XPATH [PREDICATE] :篩選
Axis::XPATH
ancestor :XPATH的直接或間接祖先
ancestor-or-self :ancestor和XPath
attribute :XPATH的所有屬性
child :XPATH的所有子節點(包括屬性)
descendant :XPATH的直接或間接子節點
descendant-or-self :descendant和XPATH
following :所有完全處于XPATH后的節點
following-sibling :following中與自己處于同一層次的節點
preceding :所有完全處于XPATH之前的節點
preceding-sibling :preceding中與自己處于同一層次的節點
self :XPATH
parent :XPATH的父節點
XPATH|XPATH :并集
優先級:
() > :: > [] > /,// > |
posted on 2008-06-20 01:44
陳梓瀚(vczh) 閱讀(4908)
評論(1) 編輯 收藏 引用 所屬分類:
C++