【问题标题】:XPath wildcard matching different pathsXPath 通配符匹配不同的路径
【发布时间】:2015-09-28 15:12:38
【问题描述】:

我不太能弄清楚如何将下面这两种情况与一个 XPath 匹配,我尝试在通配符匹配上进行搜索,但似乎没有找到它。是否可以仅用一个 XPath 匹配以下两种情况,还是需要 2 个?

有时候是这样的:

tr[@id='someid']/td/ol/li[1]/span/strong/a

其他时候就是这样:

tr[@id='someid']/td/ol/li[1]/a

【问题讨论】:

    标签: xpath


    【解决方案1】:

    XPath 1:

    tr[@id='someid']/td/ol/li[1]/a | tr[@id='someid']/td/ol/li[1]/span/strong/a
    

    XPath 2:

    tr[@id='someid']/td/ol/li[1]/(a | span/strong/a)
    

    【讨论】:

    • 第二个(更优雅,可能更高效)表达式在 XPath 1.0 中无效,但适用于 Saxon 9,但我在 XPath 2.0 规范中找不到语法。你有指向那个的指针吗?
    • 看看here,然后看看ParenthesizedExpr。而且,如果您可以使用 XPath 2 而不是 XPath 1.0,那将是向前迈出的一大步;)
    【解决方案2】:

    通过使用

    tr[@id='someid']/td/ol/li[1]/span/strong/a | tr[@id='someid']/td/ol/li[1]/a
    

    您可以在一个查询中选择两条路径。

    如果要/a-.../li[1]下的所有元素,也可以使用

    tr[@id='someid']/td/ol/li[1]//a
    

    (注意末尾的双斜杠)。来源:W3Schools

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      相关资源
      最近更新 更多