关闭

学习笔记——XPath基础

标签: 测试div
850人阅读 评论(0) 收藏 举报
分类:

在XPath中经常使用的概念:

1:基本值(原子值,Atomic value):用于表示简单的数据值;

2:项(Iterm):一个项代表一个节点或一个基本值,XPath2.0引入;

3:节点集:多个节点;

4:序列:Item和节点集就是序列,XPath2.0引入。

 

XPath支持的节点类型

  • root nodes

  • element nodes

  • text nodes

  • attribute nodes

  • namespace nodes

  • processing instruction nodes

  • comment nodes

 

指定数据类型方法:

使用datatype(data)格式。

e.g.

double(data)

 

 

Location Steps

location step由三个部分组成:

1:一个轴:指定所选节点和当前节点之间的关系;

2:一个节点测试:指定选取节点的节点类型;

3:N个限定谓语:使用任意的表达式进一步提炼所选节点集。

格式

Step:

AxisSpecifiter NodeTest Predicate* | AbbreviatedStep

AxisSpecifier:

AxisName::| AbbrevlatedAxisSpecifier

 

XPath所支持的轴:

ancestor

ancestor-or-self

attribute

child

descendant

descendant-self

following

following-sibling

namespace

parent

preceding

preceding-sibling

self

 

节点测试

XPath支持的节点测试:

1:NameTest:直接具体名称;

2:node():选择轴里的所有节点;

3:text():选择文本节点;

4:comment():选择注释节点;

5:processing-instruction:选择处理指令节点;

6:*:通配符。

 

简化写法

1:省略child轴:因为child为默认轴,所以当轴是child时,可以省略轴;

2:@代表属性轴;

3://代表后代节点:其实就是/descendant-or-self::node()/的简写;

4:.代表当前节点:self::node()的简写;

5:..代表父节点:parent::node()的简写。

 

 

运算符

算数运算符:+、-、*、div、mod。

算数运算时,所有操作都会自动转换为数值。

注意:

1:XPath所有数值都是double类型。

2:对于字符串数值,XPath会截取前后的空白,并转换为数值,如果字符串不是数组,将转换成NaN;

3:ture转换成1,false转换成0;

4:对于节点集,其会先转换成字符串;

5:在表达式中计算两个元素之差时,应在减号前后增加空格。

 

比较运算符:=、!=、<、<=、>、>=。

 

逻辑运算符:and、or。

 

|:用于组合多个路径。

 

表达式

XPath2.0提供了几个表达式:

 

for表达式

作用:循环访问序列中的每一项。

格式:

ForExpr:

SimpleForClause return ExprSingle

SimpleForClause:

for $VarName in ExprSingle (, &VarName in ExprSingle)*

 

if表达式

格式:

if (condition1)

then rtVal1

[else if (condition2)

then rtVal2

...]

else

otherVal

 

示例

if ($widget1/unit-cost < $widget2/unit-cost) 
  then $widget1
  else $widget2

 

if ($part/@discounted) 
  then $part/wholesale 
  else $part/retail

 

some/every表达式

作用:判断序列中的全部项或者任一项是否满足某个条件。

格式

some | every &VarName in ExprSingle (, $varName in ExprSingle)* satisfies ExprSingle

 

示例:

some $x in (1, 2, "cat") satisfies $x * 2 = 4

 

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:75480次
    • 积分:1262
    • 等级:
    • 排名:千里之外
    • 原创:54篇
    • 转载:3篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档