【问题标题】:XPath: How do you do a lowercase call in xpathXPath:如何在 xpath 中进行小写调用
【发布时间】:2010-12-30 05:56:46
【问题描述】:

我正在使用 Firefox 的 XPath-checker,但语法不正确。我有一个链接:

<a>LinkName</a>

我尝试这样做:

//a[lower-case(child::text())='linkname']

但我有语法错误。我做错了什么?

谢谢

【问题讨论】:

    标签: html xpath


    【解决方案1】:

    XPath 1.0 中没有名为 lower-case 的函数,它是 Firefox 中使用的 XPath 版本。

    你需要改用丑陋的translate函数:-

      translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')
    

    ...当然,如果您需要覆盖更广泛的字符集,则需要扩展它。

    【讨论】:

    • 很好的提示 - 不仅适用于 Firefox :)
    • 注意:“translate”应小写。
    • 这里是完整的ANSI表:翻译(%s,'abcdefghijklmnopqrstuvwxyzàáäåæçèéjkëìùûüýþÿžš'Abcdefghijklmnopqrstuvwxyzàáäåæçèéjööönúíîñòóóõöøáíîïðñïðóóõööùúûüýþÿžšœœééööøùúûüýþÿžšœ') span>
    • 在我的java代码中使用它作为nodeRev = (NodeList) xPath.compile("//StandardDetail/IsReverseEvent[translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='true']").evaluate(doc, XPathConstants.NODESET);
    【解决方案2】:

    你可以使用翻译

    //a[translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') = 'linkname']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 2016-07-24
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多