實例 1
基本的XPath語法類似於在一個檔案系統中定位檔案,如果路徑以斜線 / 開始, 那麼該路徑就表示到一個元素的絕對路徑。
/AAA
選擇根元素AAA
<AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> </DDD> <CCC/> </AAA> /AAA/CCC
#選擇AAA的所有CCC子元素
<AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> </DDD> <CCC/> </AAA> /AAA/DDD/BBB
選擇AAA的子元素DDD的所有子元素
<AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> </DDD> <CCC/> </AAA>
實例2
若路徑以雙斜線// 開頭, 則表示選擇文件中所有滿足雙斜線//之後規則的元素(無論層級關係) //BBB
選擇所有BBB元素
<AAA> <BBB/> <CCC/> <BBB/> <DDD> <BBB/> </DDD> <CCC> <DDD> <BBB/> <BBB/> </DDD> </CCC> </AAA> //DDD/BBB
選擇所有父元素是DDD的BBB元素
<AAA> <BBB/> <CCC/> <BBB/> <DDD> <BBB/> </DDD> <CCC> <DDD> <BBB/> <BBB/> </DDD> </CCC> </AAA>
實例3
星號* 表示選擇所有由星號之前的路徑所定位的元素
/AAA/CCC/DDD/*
選擇所有路徑依附於/AAA/CCC/DDD的元素
<AAA> <XXX> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </CCC> <CCC> <BBB> <BBB> <BBB/> </BBB> </BBB> </CCC> </AAA> /*/*/*/BBB
選擇所有的有3個祖先元素的BBB元素
<AAA> <XXX> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </CCC> <CCC> <BBB> <BBB> <BBB/> </BBB> </BBB> </CCC> </AAA> //*
選擇所有元素
<AAA> <XXX> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </CCC> <CCC> <BBB> <BBB> <BBB/> </BBB> </BBB> </CCC> </AAA>
實例4
方塊號碼裡的表達式可以進一步的指定元素, 其中數字表示元素在選擇集裡的位置, 而last()函數則表示選擇集中的最後一個元素.
/AAA/BBB[1]
選擇AAA的第一個BBB子元素
<AAA> <BBB/> <BBB/> <BBB/> <BBB/> </AAA> /AAA/BBB[last()]
選擇AAA的最後一個BBB子元素
<AAA> <BBB/> <BBB/> <BBB/> <BBB/> </AAA>
實例5
#//@id
選擇所有的id屬性
<AAA> <BBB id = \"b1\"/> <BBB id = \"b2\"/> <BBB name = \"bbb\"/> <BBB/> </AAA> //BBB[@id]
選擇有id屬性的BBB元素
<AAA> <BBB id = \"b1\"/> <BBB id = \"b2\"/> <BBB name = \"bbb\"/> <BBB/> </AAA> //BBB[@name]
選擇有name屬性的BBB元素
<AAA> <BBB id = \"b1\"/> <BBB id = \"b2\"/> <BBB name = \"bbb\"/> <BBB/> </AAA> //BBB[@*]
選擇任意屬性的BBB元素
<AAA> <BBB id = \"b1\"/> <BBB id = \"b2\"/> <BBB name = \"bbb\"/> <BBB/> </AAA> //BBB[not(@*)]
選擇任意屬性的BBB元素
##選擇沒有屬性的BBB元素
##
<AAA> <BBB id = \"b1\"/> <BBB id = \"b2\"/> <BBB name = \"bbb\"/> <BBB/> </AAA>
//BBB[@id=\'b1\']
選擇含有屬性id且其值為\'b1\'的BBB元素
<AAA> <BBB id = \"b1\"/> <BBB name = \" bbb \"/> <BBB name = \"bbb\"/> </AAA> //BBB[@name=\'bbb\']
<AAA> <BBB id = \"b1\"/> <BBB name = \" bbb \"/> <BBB name = \"bbb\"/> </AAA> //BBB[normalize-space(@name)=\'bbb\']
<AAA> <BBB id = \"b1\"/> <BBB name = \" bbb \"/> <BBB name = \"bbb\"/> </AAA>
//*[count(BBB)=2 ]
<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD> <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE> </AAA> //*[count(*)=2]
<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD> <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE> </AAA> //*[count(*)=3]
<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD> <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE> </AAA>
#//*[name()=\'BBB\']
選擇所有名稱為BBB的元素(這裡等價於//BBB)
<AAA> <BCC> <BBB/> <BBB/> <BBB/> </BCC> <DDB> <BBB/> <BBB/> </DDB> <BEC> <CCC/> <DBD/> </BEC> </AAA> //*[starts-with(name(),\'B\')]
#
<AAA> <BCC> <BBB/> <BBB/> <BBB/> </BCC> <DDB> <BBB/> <BBB/> </DDB> <BEC> <CCC/> <DBD/> </BEC> </AAA> //*[contains(name(),\'C\')]
<AAA> <BCC> <BBB/> <BBB/> <BBB/> </BCC> <DDB> <BBB/> <BBB/> </DDB> <BEC> <CCC/> <DBD/> </BEC> </AAA>
//CCC | //BBB
選擇所有的CCC和BBB元素
<AAA> <BBB/> <CCC/> <DDD> <CCC/> </DDD> <EEE/> </AAA> /AAA/EEE | //BBB
<AAA> <BBB/> <CCC/> <DDD> <CCC/> </DDD> <EEE/> </AAA> /AAA/EEE | //DDD/CCC | /AAA | //BBB
<AAA> <BBB/> <CCC/> <DDD> <CCC/> </DDD> <EEE/> </AAA>
/AAA
等價於/child::AAA
#
<AAA> <BBB/> <CCC/> </AAA> /child::AAA
#
<AAA> <BBB/> <CCC/> </AAA>
<AAA> <BBB/> <CCC/> </AAA>
<AAA> <BBB/> <CCC/> </AAA>/child::AAA/BBB
二者都可以合併
<AAA> <BBB/> <CCC/> </AAA>
實例11
descendant (後代)軸包含上下文節點的後代,一個後代是指子節點或子節點的子節點等等, 因此descendant軸不會包含屬性和命名空間節點.
# /descendant::*
選擇文檔根元素的所有後代.即所有的元素被選擇
<AAA> <BBB> <DDD> <CCC> <DDD/> <EEE/> </CCC> </DDD> </BBB> <CCC> <DDD> <EEE> <DDD> <FFF/> </DDD> </EEE> </DDD> </CCC> </AAA> /AAA/BBB/descendant::*
選擇/AAA/BBB的所有後代元素
##
<AAA> <BBB> <DDD> <CCC> <DDD/> <EEE/> </CCC> </DDD> </BBB> <CCC> <DDD> <EEE> <DDD> <FFF/> </DDD> </EEE> </DDD> </CCC> </AAA> //CCC/descendant::*選擇所有在祖先元素中有CCC的元素
<AAA> <BBB> <DDD> <CCC> <DDD/> <EEE/> </CCC> </DDD> </BBB> </AAA>### 以上就是XPath 11個實例的內容,更多相關內容請關注PHP中文網(www.php.cn)! ################