注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

无线时代辐射无穷

抓紧生宝宝,小心辐射

 
 
 

日志

 
 

XPath 11个实例  

2008-10-23 09:28:49|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

实例 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元素

     <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>

  评论这张
 
阅读(361)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017