zoukankan      html  css  js  c++  java
  • XPATH学习总结

    XPATH学习总结

            今天是五一假期的最后一天,本来想去植物园看花展,可惜天公不作美,早上就开始黑云压城,继而雨点随着狂风四处流窜,只好老老实实呆在家里了。公司最近组织了一次XSLT方面的培训,就到http://www.w3school.com.cn/上浏览了些相关资料,收获还不少,这里稍作总结,方便以后查询。

    一 XPath简介

            XPath 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。
    XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 同时被构建于 XPath 表达之上,因此要学习XSLT,首先要先了解一下XPATH。

    二 XPath术语

            这部分是照本宣科,参考:http://www.w3school.com.cn/xpath/xpath_nodes.asp

            先参考一个xml文档,如下:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <root>
      
    <list>
        
    <book>
            
    <title language="en">Think in Java</title>
            
    <artist>Bob Dylan</artist>
            
    <country>USA</country>
            
    <company>Columbia</company>
            
    <price>10.90</price>
            
    <year>1985</year>
        
    </book>
      
    </list>
    </root>

    1.节点(Node)

    在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。

    在上面的例子中,<root>节点被成为文档节点,<book>节点是元素节点,language="en"是属性节点。

    2.基本值(或称原子值,Atomic value)

            基本值是无父或无子的节点。

            示例:Think in Java,en都是原子节点。

    3.节点关系

    节点之间存在如下几种关系,字面意思很明白了,就不作解释了。

    (1).父(Parent)
    (2).子(Children)
    (3).同胞(Sibling)
    (4).先辈(Ancestor)
    (5).后代(Descendant)

    三 XPath的语法

            XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。

    1.位置路径表达式

            位置路径可以是绝对的,也可以是相对的。

            绝对路径起始于正斜杠( / ),而相对路径不会这样。在两种情况中,位置路径均包括一个或多个步,每个步均被斜杠分割。

            下面列出了最常用的路径表达式

    表达式

    描述

    nodename 选取此节点的所有子节点
    / 从根节点选取
    // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
    . 选取当前节点
    .. 选取当前节点的父节点
    @ 选取属性

    2.谓语

    谓语用来查找某个特定的节点或者包含某个指定的值的节点。谓语被嵌在方括号中。

    示例:

    //list/book[1]:提取list节点下的第一个book节点

    //list/book[last()]:提取list节点下的最后一个book节点

    //title[@language='en']:提取language属性等于en的title节点

    3.选取未知节点

    XPath 通配符可用来选取未知的 XML 元素。

    通配符

    描述

    * 匹配任何元素节点
    @* 匹配任何属性节点
    node() 配任何类型的节点

    4.XPath轴

    轴可定义某个相对于当前节点的节点集。

    轴名称

    结果

    ancestor 选取当前节点的所有先辈(父、祖父等)
    ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身
    attribute 选取当前节点的所有属性
    child 选取当前节点的所有子元素。
    descendant 选取当前节点的所有后代元素(子、孙等)。
    descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
    following 选取文档中当前节点的结束标签之后的所有节点。
    namespace 选取当前节点的所有命名空间节点
    parent 选取当前节点的父节点。
    preceding 选取文档中当前节点的开始标签之前的所有节点。
    preceding-sibling 选取当前节点之前的所有同级节点。
    self 选取当前节点。

    5.步(step)

    步(step)包括:

    轴(axis):定义所选节点与当前节点之间的树关系

    节点测试(node-test):识别某个轴内部的节点

    零个或者更多谓语(predicate): 更深入地提炼所选的节点集

    步的语法:

    轴名称::节点测试[谓语]

    示例:

    例子

    结果

    child::book 选取所有属于当前节点的子元素的 book 节点
    attribute::languane 选取当前节点的 languange 属性
    child::* 选取当前节点的所有子元素
    attribute::* 选取当前节点的所有属性
    child::text() 选取当前节点的所有文本子节点
    child::node() 选取当前节点的所有子节点
    descendant::book 选取当前节点的所有 book 后代
    ancestor::book 选择当前节点的所有 book 先辈

    四.XPath运算符

            XPath支持的运算主要有加、减、乘、除、模、与、或及相关比较运算(如:等于,大于,小于等),具体可以参考http://www.w3school.com.cn/xpath/xpath_operators.asp

    五.相关函数

    XPath支持的函数很多,具体可以参考:http://www.w3school.com.cn/xpath/xpath_functions.asp

    六.示例演示

  • 相关阅读:
    Android中的Looper , Handler , Message有什么关系
    理解Android系统的进程间通信原理(二)----RPC机制
    深入浅出JVM
    Linux个人常用命令汇总
    垃圾收集器与内存分配策略
    Linux上部署Java应用+Python3环境搭建
    List中remove元素的理解
    Java异常
    深入理解Java 8 Stream
    深入理解Java 8 Lambda
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330226.html
Copyright © 2011-2022 走看看