XPath(XML Path Language)是XSLT标准的主要组成部分。它用于在XML文档中浏览元素和属性,提供了一种强大的定位和选择节点的方式。
XPath使用路径表达式来选择XML文档中的节点或节点集。这些路径表达式类似于在传统计算机文件系统中使用的路径表达式。
例如,/bookstore/book/title
是一个XPath路径表达式,表示选择根元素是bookstore
的子元素book
的子元素title
。
XPath包括200多个内置函数,用于处理不同类型的数据。这些函数涵盖了字符串值、数值、布尔值、日期和时间比较、节点操作、序列操作等。
XPath表达式也可以在多种编程语言中使用,如JavaScript、Java、XML Schema、PHP、Python、C和C++等。
XPath是XSLT标准的主要组成部分,它与XSLT一起用于对XML文档进行转换和样式处理。具有XPath知识可以充分发挥XSLT的强大功能
在XPath中,有七种节点:元素、属性、文本、命名空间、处理指令、注释和根节点。XML文档被视为节点树,树的最顶层元素称为根元素。
在XPath中,节点之间有不同的关系:
XPath使用路径表达式在XML文档中选择节点。以下是一些常用的XPath路径表达式:
nodename
:选择所有名称为 "nodename" 的节点。/
:从根节点选择。//
:选择文档中与选择匹配的当前节点的位置无关的节点。.
:选择当前节点。..
:选择当前节点的父节点。@
:选择属性。XPath示例文档
以下是我们将在下面的示例中使用的XML文档:
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
选择节点示例
以下是一些XPath路径表达式的示例及其结果:
/bookstore
:选择所有名称为 "bookstore" 的节点。/bookstore/book
:选择根元素 bookstore
的子元素 book
。//title[@lang='en']
:选择所有具有值为 "en" 的 "lang" 属性的 title
元素。XPath通配符可用于选择未知的XML节点:
*
:匹配任何元素节点。@*
:匹配任何属性节点。node()
:匹配任何类型的节点。例如,/bookstore/*
选择 bookstore
元素的所有子元素节点。
通过在XPath表达式中使用 |
运算符,您可以选择多个路径:
//book/title | //book/price
:选择所有 book
元素的 title
和 price
元素。/bookstore/book/title | //price
:选择 bookstore
元素的 book
元素的 title
元素 和 文档中的所有 price
元素。XML示例文档
以下是我们将在下面的示例中使用的XML文档:
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
在XPath中,轴表示与上下文(当前)节点的关系,并用于在树上相对于该节点定位其他节点。以下是常用的XPath轴及其描述:
位置路径可以是绝对的或相对的。绝对位置路径以斜杠(/)开头,而相对位置路径则不是。位置路径由一个或多个步骤组成,每个步骤之间用斜杠分隔。
以下是一些XPath位置路径表达式的示例及其结果:
/child::book
:选择所有作为当前节点子元素的 book
节点。/attribute::lang
:选择当前节点的 lang
属性。/child::*
:选择当前节点的所有元素子节点。/attribute::*
:选择当前节点的所有属性。/child::text()
:选择当前节点的所有文本节点子节点。/child::node()
:选择当前节点的所有子节点。/descendant::book
:选择当前节点的所有 book
后代。/ancestor::book
:选择当前节点的所有 book
祖先。/ancestor-or-self::book
:选择当前节点的所有 book
祖先,如果当前节点本身是一个 book
节点,也选择当前节点本身。/child::*/child::price
:选择当前节点的所有 price
孙子节点。XPath表达式返回一个节点集、一个字符串、一个布尔值或一个数字。以下是XPath表达式中可用的运算符列表:
|
:计算两个节点集。+
:加法。-
:减法。*
:乘法。div
:除法。=
:等于。!=
:不等于。<
:小于。<=
:小于或等于。>
:大于。>=
:大于或等于。or
:或。and
:与。mod
:取模(除法余数)。为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding
,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎点赞、收藏、关注
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。