
1.8 XPath概述
XPath是从XML基础规范上派生出的技术,专门用于快速检索和查询XML文档,它使用方便,功能强大。XPath也是XSLT技术的基础。XPath是W3C定义的用于在单个XML文档中快速检索和定位XML文档节点的规范。它也是跨平台的,若一些软件支持XPath,则必然支持标准的XPath语法。因此,无论是Java还是C#都是支持相同语法的XPath。
要理解XPath可以参考文件目录结构FilePath。在Windows资源管理器左边的文件目录树状列表中,可以看到各种文件对象,包括磁盘根目录,各级文件目录等等,它们共同构成了一个树状结构。选择对象时既可以在这个树状结构中一个个查找,也可以通过指定路径名来进行快速定位。文件系统的路径名采用斜杠符号来分隔各个目录层次的目录名。XML文档中也采用这种树状层次结构,因此也可以将这种文件路径名的概念套用到XML文档中,于是形成了XPath路径。处理XML文档时可以一层层查找所需的XML节点,也可以指定XPath路径字符串来快速定位XML节点。在XPath路径中,使用反斜杠符号来分隔各个层次的XML元素名称。
在文件目录系统中,可以使用绝对路径名,也可以使用相对路径名。使用一个点号表示当前目录,使用两个点表示父目录。在XPath中也套用了类似的概念,从XML文档根节点出发指定的XPath路径为绝对路径,从某个XML节点开始转到其他节点所经过的路径为相对路径。其实可以将绝对路径看成从根节点出发的相对路径。XML也使用一个点表示当前节点,使用两个点来表示父节点。
在文件目录系统中,同一个目录下面不能有相同名称的对象,因此相对路径名和绝对路径名都能准确地定位到一个目录上。而在XML文档中,同一个XML节点下可以存在多个具有相同名称的子节点,因此XPath路径可能无法唯一地确定一个XML节点。此时XPath采用了内嵌条件判断语句的方法来解决这个问题。在XPath路径字符串中可以使用一对方括号来包含一个逻辑表达式,在这个表达式中可以使用字符串判断、数学四则运算、逻辑判断和一些预定义函数,并且XPath路径中每个层次都能包含表达式,因此XPath的逻辑判断功能是非常强大的。