基础的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元素
<AAA> <BBB id = \"b1\"/> <BBB id = \"b2\"/> <BBB name = \"bbb\"/> <BBB/> </AAA>
实例 6
属性的值能够被用来作为挑选的原则, normalize-space函数删除了前部和尾部的空格, 而且把一连的空格串替换为一个单一的空格
//BBB[@id=\'b1\']
挑选含有属性id且其值为\'b1\'的BBB元素
<AAA> <BBB id = \"b1\"/> <BBB name = \" bbb \"/> <BBB name = \"bbb\"/> </AAA> //BBB[@name=\'bbb\']
挑选含有属性name且其值为\'bbb\'的BBB元素
<AAA> <BBB id = \"b1\"/> <BBB name = \" bbb \"/> <BBB name = \"bbb\"/> </AAA> //BBB[normalize-space(@name)=\'bbb\']
挑选含有属性name且其值(在用normalize-space函数去掉前后空格后)为\'bbb\'的BBB元素
<AAA> <BBB id = \"b1\"/> <BBB name = \" bbb \"/> <BBB name = \"bbb\"/> </AAA>
实例 7
count()函数能够计数所选元素的个数
//*[count(BBB)=2]
挑选含有2个BBB子元素的元素
<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD> <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE> </AAA> //*[count(*)=2]
挑选含有2个子元素的元素
<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD> <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE> </AAA> //*[count(*)=3]
挑选含有3个子元素的元素
<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD> <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE> </AAA>
实例 8
name()函数返回元素的称号, start-with()函数在该函数的第一个参数字符串是以第二个参数字符最先的状况返回true, contains()函数当其第一个字符串参数包括有第二个字符串参数时返回true.
//*[name()=\'BBB\']
挑选一切称号为BBB的元素(这里等价于//BBB)
<AAA> <BCC> <BBB/> <BBB/> <BBB/> </BCC> <DDB> <BBB/> <BBB/> </DDB> <BEC> <CCC/> <DBD/> </BEC> </AAA> //*[starts-with(name(),\'B\')]
挑选一切称号以\"B\"肇端的元素
<AAA> <BCC> <BBB/> <BBB/> <BBB/> </BCC> <DDB> <BBB/> <BBB/> </DDB> <BEC> <CCC/> <DBD/> </BEC> </AAA> //*[contains(name(),\'C\')]
挑选一切称号包括\"C\"的元素
<AAA> <BCC> <BBB/> <BBB/> <BBB/> </BCC> <DDB> <BBB/> <BBB/> </DDB> <BEC> <CCC/> <DBD/> </BEC> </AAA>
实例 9
多个途径能够用分隔符 | 兼并在一起
//CCC | //BBB
挑选一切的CCC和BBB元素
<AAA> <BBB/> <CCC/> <DDD> <CCC/> </DDD> <EEE/> </AAA> /AAA/EEE | //BBB
挑选一切的BBB元素和一切是AAA的子元素的EEE元素
<AAA> <BBB/> <CCC/> <DDD> <CCC/> </DDD> <EEE/> </AAA> /AAA/EEE | //DDD/CCC | /AAA | //BBB
能够兼并的途径数量没有限定
<AAA> <BBB/> <CCC/> <DDD> <CCC/> </DDD> <EEE/> </AAA>
实例 10
child轴(axis)包括上下文节点的子元素, 作为默许的轴,能够疏忽不写.
/AAA
等价于 /child::AAA
<AAA> <BBB/> <CCC/> </AAA> /child::AAA
等价于/AAA
<AAA> <BBB/> <CCC/> </AAA>
/AAA/BBB
等价于/child::AAA/child::BBB
<AAA> <BBB/> <CCC/> </AAA>
/child::AAA/child::BBB
等价于/AAA/BBB
<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个实例的内容,更多相关内容请关注ki4网(www.ki4.cn)!