• (引)XPath 示例


    NET Framework 4
    此主题尚未评级

    本主题回顾整个 XPath 参考中出现的语法示例。 所有示例均基于 XPath 语法的示例 XML 文件 (inventory.xml) 有关在测试文件中使用 XPath 表达式的示例,请参见本主题最后的“联合 ( | ) 示例”。

    表达式 引用

    ./author

    当前上下文中的所有 <author> 元素。 注意,此表达式等效于下一行中的表达式。

    author

    当前上下文中的所有 <author> 元素。

    first.name

    当前上下文中的所有 <first.name> 元素。

    /bookstore

    此文档的文档元素 (<bookstore>)。

    //author

    文档中的所有 <author> 元素。

    book[/bookstore/@specialty=@style]

    style 属性值等于文档根处 <bookstore> 元素的 specialty 属性值的所有 <book> 元素。

    author/first-name

    作为 <author> 元素子级的所有 <first-name> 元素。

    bookstore//title

    <bookstore> 元素中一级或多级深度的所有 <title> 元素(任意后代)。 注意,此表达式不同于下一行中的表达式。

    bookstore/*/title

    作为 <bookstore> 元素的孙代的所有 <title> 元素。

    bookstore//book/excerpt//emph

    位于 <book> 元素的 <excerpt> 子级内任意位置和位于 <bookstore> 元素内任意位置的所有 <emph> 元素。

    .//title

    当前上下文中一级或多级深度的所有 <title> 元素。 注意,本质上只有这种情况需要句点表示法。

    author/*

    作为 <author> 元素子级的所有元素。

    book/*/last-name

    作为 <book> 元素孙级的 <last-name> 所有元素。

    */*

    当前上下文的所有孙级元素。

    *[@specialty]

    具有 specialty 属性的所有元素。

    @style

    当前上下文的 style 属性。

    price/@exchange

    当前上下文中 <price> 元素上的 exchange 属性。

    price/@exchange/total

    返回空节点集,因为属性不包含元素子级。 XML 路径语言 (XPath) 语法允许使用此表达式,但是严格意义上讲无效。

    book[@style]

    当前上下文的具有 style 属性的 <book> 所有元素。

    book/@style

    当前上下文的所有 <book> 元素的 style 属性。

    @*

    当前元素上下文的所有属性。

    ./first-name

    当前上下文节点中的所有 <first-name> 元素。 注意,此表达式等效于下一行中的表达式。

    first-name

    当前上下文节点中的所有 <first-name> 元素。

    author[1]

    当前上下文节点中的第一个 <author> 元素。

    author[first-name][3]

    具有 <first-name> 子级的第三个 <author> 元素。

    my:book

    my 命名空间中的 <book> 元素。

    my:*

    my 命名空间中的所有元素。

    @my:*

    my 命名空间中的所有属性(不包括 my 命名空间中的元素的未限定属性)。

    注意,索引相对于父级。 考虑以下数据:

    <x>
      <y/>
      <y/>
    </x>
    <x>
      <y/>
      <y/>
    </x>
    

    表达式 引用

    x/y[1]

    每个 <x> 的第一个 <y> 子级。 此表达式等效于下一行中的表达式。

    x/y[position() = 1]

    每个 <x> 的第一个 <y> 子级。

    (x/y)[1]

    <x> 元素的整个 <y> 子级集合中的第一个 <y>

    x[1]/y[2]

    第一个 <x> 的第二个 <y> 子级。

    其他示例引用 XPath 的示例 XML 文件。

    表达式 引用

    book[last()]

    前上下文节点的最后一个 <book> 元素。

    book/author[last()]

    前上下文节点的每个 <book> 元素的最后一个 <author> 子级。

    (book/author)[last()]

    当前上下文节点的 <book> 元素的整个 <author> 子级集合中的最后一个 <author> 元素。

    book[excerpt]

    包含至少一个 <excerpt> 元素子级的所有 <book> 元素。

    book[excerpt]/title

    作为 <book> 元素子级,同时包含至少一个 <excerpt> 元素子级的所有 <title> 元素。

    book[excerpt]/author[degree]

    包含至少一个 <degree> 元素子级,并作为同样包含至少一个 <excerpt> 元素的 <book> 元素的子级的所有 <author> 元素。

    book[author/degree]

    包含 <author> 子级,这些子级又包含至少一个 <degree> 子级的所有 <book> 元素

    author[degree][award]

    包含至少一个 <degree> 元素子级和至少一个 <award> 元素子级的所有 <author> 元素。

    author[degree and award]

    包含至少一个 <degree> 元素子级和至少一个 <award> 元素子级的所有 <author> 元素。

    author[(degree or award) and publication]

    包含至少一个 <degree><award> 和至少一个 <publication> 作为子级的所有 <author> 元素。

    author[degree and not(publication)]

    包含至少一个 <degree> 元素子级并且不包含 <publication> 元素子级的所有 <author> 元素。

    author[not(degree or award) and publication]

    包含至少一个 <publication> 元素子级,但不包含 <degree><award> 元素子级的所有 <author> 元素。

    author[last-name = "Bob"]

    包含至少一个值为 Bob<last-name> 元素子级的所有 <author> 元素。

    author[last-name[1] = "Bob"]

    第一个 <last-name> 子元素的值为 Bob 的所有 <author> 元素。 注意,此表达式等效于下一行中的表达式。

    author[last-name [position()=1]= "Bob"]

    第一个 <last-name> 子元素的值为 Bob 的所有 <author> 元素。

    degree[@from != "Harvard"]

    from 属性不等于 "Harvard" 的所有 <degree> 元素。

    author[. = "Matthew Bob"]

    值为 Matthew Bob 的所有 <author> 元素。

    author[last-name = "Bob" and ../price &gt; 50]

    包含值为 Bob<last-name> 子元素和值大于 50 的 <price> 同级元素的所有 <author> 元素。

    book[position() &lt;= 3]

    前三本书(1、2、3)。

    author[not(last-name = "Bob")]

    不包含值为 Bob<last-name> 子元素的所有 <author> 元素。

    author[first-name = "Bob"]

    至少有一个值为 Bob<first-name> 子级的所有 <author> 元素。

    author[* = "Bob"]

    所有包含任何值为 Bob 的子元素的 author 元素。

    author[last-name = "Bob" and first-name = "Joe"]

    具有值为 Bob<last-name> 子元素和值为 Joe<first-name> 子元素的所有 <author> 元素。

    price[@intl = "Canada"]

    上下文节点中 intl 属性等于 "Canada" 的所有 <price> 元素。

    degree[position() &lt; 3]

    作为上下文节点子级的前两个 <degree> 元素。

    p/text()[2]

    上下文节点中每个 <p> 元素的第二个文本节点。

    ancestor::book[1]

    上下文节点最近的 <book> 上级。

    ancestor::book[author][1]

    上下文节点最近的 <book> 上级,并且此 <book> 元素具有 <author> 元素作为其子级。

    ancestor::author[parent::book][1]

    当前上下文最近的 <author> 上级,并且此 <author> 元素是 <book> 元素的子级。

    为了演示 union 运算,我们使用以下 XPath 表达式:

    x | y/x

    在以下 XML 文件中选择所有值为 greenblue 的 <x> 元素:

    XML 文件 (data1.xml)

    XSLT 文件 (union.xsl)

    格式化输出

    green,blue,blue,green

    处理器输出

    <?xml version="1.0" encoding="UTF-16"?>green,blue,blue,green

     

    引用地址: http://msdn.microsoft.com/zh-cn/library/ms256086.aspx

    微软BI技术交流群:316744959 武汉NET技术群:961108969 NET技术群:21386099 本人具有丰富的系统开发经验,承接系统开发,小程序,NET系统开发,BI开发,有需求联系微信手机:15010195887
  • 相关阅读:
    持续交付二:为什么需要多个环境
    asp.net core web api之异常
    .NET架构小技巧(2)——访问修饰符正确姿势
    .NET架构小技巧(6)——什么是好的架构
    .NET架构小技巧(7)——做好小的项目
    .NET架构小技巧(4)——反射,架构人员法宝II
    asp.net core监控—引入Prometheus(二)
    asp.net core监控—引入Prometheus(三)
    .NET架构小技巧(8)——优待异常
    asp.net core 5.0的一些模块
  • 原文地址:https://www.cnblogs.com/Impulse/p/2372801.html
Copyright © 2020-2023  润新知