logo
天地变化的道理
使用率很高网站
生活要常常分享
您身边百科全书
免费为您秀产品
XPath
XPath XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的计算机语言。 XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作为一个通用的、介于与XSL间的语法模型。但是XPath很快的被开发者采用来当作小型查询语言。 表示法. 最常见的XPath表达式是路径表达式(XPath这一名称的另一来源)。路径表达式是从一个XML节点(当前的上下文节点)到另一个节点、或一组节点的书面步骤顺序。这些步骤以“/”字符分开,每一步有三个构成成分: 一般情况下,我们使用简写后的语法。虽然完整的轴描述是一种更加贴近人类语言,利用自然语言的单词和语法来书写的描述方式,但是相比之下也更加罗嗦。 简略的语法. 最简单的XPath如下: 在这里选择所有符合规矩的C节点:C节点必须是B的子节点(codice_2),同时B节点必须是A的子节点(codice_3),而A是这个XML文档的根节点(codice_4)。此时的这种描述法类似于磁盘中文件的路径(URI),从盘符开始顺着一级一级的目录最终找到文件。 这里还有一个复杂一些的例子,包含了全部构成成分(请详细的看): 此时选择的元素是:在B节点下的第一个节点(codice_6),不论节点的名称如何(codice_7);而B节点必须出现在A节点内,不论和A节点之间相隔几层节点(codice_8);与此同时A节点还必须是当前节点的子节点(codice_9,前边没有codice_10)。 扩展的语法. 在未缩简语法里,两个上述范例可以写为: 在XPath的每个步骤里,通过完整的轴描述(例如:codice_13或codice_14)进行明确的指定,然后使用codice_15,它的后面跟着节点测试的内容,例如上面范例所示的codice_9以及codice_17。 轴描述语法. 轴描述元表示XML文件分支树表达式的浏览方向。这些坐标──包括全名及缩写语法──列举如下: 关于使用attribute坐标简写语法的一个范例,codice_18在文件树里任何地方的元素下选择了一个叫codice_19的属性。self坐标最通常与述语同用,以参考现行选定节点。例如,codice_20在现行上下文选取了叫codice_21的元素,该元素文字内容是codice_22。 如果需要了解更多,请查看ZVON.org给出的XPath帮助 (页面存档备份,存于-{zh-cn:互联网档案馆;zh-tw:网际网路档案馆;zh-hk:互联网档案馆;zh-sg:互联网档案馆;}-) 节点测试. 节点测试包括特定节点名或者更一般的表达式。至于XML里命名空间前缀codice_23已定义的文件,codice_24将找到所有在那命名空间里codice_25的节点。 其他节点格式: 节点描述. 节点描述为一个逻辑真假表达式,任何真假判断表达式都可在节点后方括号里表示,这条件必须在XPath处理这个节点前先被满足。在某一步骤可有多少个描述并没有限制。 范例如下: codice_31,这将检查元素codice_32有没有codice_19属性,并且该它的值是codice_34。 复杂一些的范例如下: 或 此例将会选择符合条件的元素codice_32的codice_38属性。 要求元素codice_32: 函数与运算符. XPath 1.0定义四种数据型别:节点型(本身无序的节点组)、字符串型、数字型、与布尔型。 有效的运算符有: 函数有: concat(), substring(), contains(), substring-before(), substring-after(), translate(), normalize-space(), string-length() sum(), round(), floor(), ceiling() name(), local-name(), namespace-uri() position(), last() string(), number(), boolean() 某些常用的函式详列如下。完整明细请参照W3C建议书。 数学运算函数. 使用操作子:codice_52和codice_53的表达式可以创造于术语内。布尔表达式可用括号codice_54、布尔操作子codice_55与codice_56、和/或者上述的codice_57函式联合起来。数值计算使用codice_58和codice_59。字符串可包含任何Unicode字符。 述语内外,整个节点组可利用"|"字符联合起来。 codice_60会返回单一节点组,包括现行上下文找到的所有拥有codice_61或codice_62子元素的codice_63元素、有codice_64子元素的codice_65元素。 codice_66会选取price属性至少两倍于discount属性数值的对象 XPath 2及XPath 3. 在W3C建议下,XPath 1.0于1999年11月16日发表。XPath 2.0于2007年1月23日成为W3C推荐标准。XPath 2.0表达了XPath语言在大小与能力上显著的增加。 最值得大书特书的改变是XPath 2.0有了更丰富的型别系统;XPath 2.0支持不可分割型态,如在XML Schema内建型态定义一样,并且也可自纲要(schema)导入用户自定型别。现在每个值都是一个序列(一个单一不可分割值或节点都被视为长度一的序列)。XPath 1.0节点组被节点序列取代,它可以是任何顺序。 为了支持更丰富的型别组,XPath 2.0提供相当延展的函式与操作子群。 XPath 2.0实际上是XQuery 1.0的子集合。它提供了一个for表达式。该式是XQuery里「FLWOR」表达式的缩减版。利用列出XQuery省去的部分来描述该语言是可能的。主要范例是查询前导语(query prolog)、元素和属性建构式、「FLWOR」语法的余项式、以及codice_67表达式。 XPath 3.0于2014年4月8日成为W3C推荐标准,而XPath3.1则于2017年3月21日成为W3C推荐标准。
XPath
本站由爱斯园团队开发维护,感谢
那些提出宝贵意见和打赏的网友,没有你们的支持,
网站不可能发展到今天,
继往开来,善终如始,我们将继续砥砺前行。
Copyright ©2014 iissy.com, All Rights Reserved.