引用
维基百科
一,概述
XPath 是XML路径语言(xml path language),是一种用来确定XML文档中某部分位置的语言
XPath 是基于XML的树状结构,提供在数据结构树中找寻节点的能力
起初XPath 的提出初衷是将其作为一个通用的,介于XPointer和XSL间的语法模型
但是XPath很快被开发者采用来当做小型查询语言
二,表示法
最常见的XPath表达式是路径表达式
从一个XML节点(当前的上下文节点)到另一个节点,或者一组节点的书面步骤顺序
这些步骤以 /
字符分开,每一步有三个构成部分:
轴描述,用最直接的方式接近目标节点
节点测试,用于筛选节点位置和名称
节点描述,用于筛选节点的属性和子节点的特征
一般情况下,我们使用简写后的语法,虽然完整的轴描述是一种更加贴近人类语言,
利用自然语言的单词和语法书写的描述方式,但是相对比较啰嗦
2.1 简写后的语法
最简单的XPath是 /A/B/C
这里选择所有符合规矩的C
节点,C
节点必须是B的子节点B/C
,B
节点是A
节点的子节点
A
是这个XML文档的根节点(/A
)
此时的这种描述法类似于磁盘中的文件的路径,从盘符开始顺着一级一级的目录最终找到文件
下面的例子,包含了所有构成成分A//B/*[1]
此时选择的元素是,在B
节点下的第一个节点(B/*[1]
),不论节点的名称如何(*
),
而B
节点必须出现在A
节点中,不论和A
节点之间相隔几层节点(//B
)
与此同时A
节点还必须是当前节点的子节点(A
,前面没有/
)
2.2 啰嗦的语法
在未缩写的语法中,上面的例子可以写为
/child::A/child::B/child::C
child::A/descendant-or-self::B/child::node()[1]
在XPath的每个步骤中,通过完整的轴描述进行明确的指定,然后使用::
,后面跟着节点测试的内容
三,轴描述语法
轴描述元表示XML文件分支树表达式的浏览方向,这些坐标包括全名和缩写语法
关于使用attribute 坐标简写语法的一个范例
//a/@href
在文件树里面任何地方的元素下选择了一个叫 href
的属性
self
坐标最通常与术语同用,参考现行选定节点
h3[.='see also']
在现行上下文选取了叫h3
的元素,该元素的文字内容是see also
四,节点测试
节点测试包括特定节点名或者更加一般的表达式
至于XML里命名空间前缀gs
已经定义的文件,//gs:enquiry
将找到所有在命名空间里
enquiry
的节点
comment()
寻找XML注释节点,例如``
text()
寻找某点的文字类型,例如hello
于<k>hello</k>
processing-instruction()
寻找XML处理指令如<?php echo $a; ?>
这个例子中,符合processing-instruction('php')
会返回值
node()
寻找所有点
五,节点描述
节点描述为一个逻辑真假表达式,任何真假判断表达式都可以在节点后方括号中