学习笔记——XPath基础

在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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值