代码之家  ›  专栏  ›  技术社区  ›  Jim Blackler

如何匹配继续通过子节点的文本序列(例如,使用sgml样式标记)?

  •  2
  • Jim Blackler  · 技术社区  · 14 年前
    <bits>
      <thing>Match this please</thing>
      <thing>Don't match this</thing>
      <thing>Match <b>this</b> please</thing>
    </bits>
    

    这样的表达:

    //thing[text()='Match this please']
    

    将定位第一个“thing”,而不是第三个,因为短语是通过子节点分布的。

    是否有一个表达式与第一个匹配 我例子中的第三个“东西”?

    2 回复  |  直到 14 年前
        1
  •  3
  •   icyrock.com    14 年前

    尝试:

    //thing[string()='Match this please']
    

    jsfiddle公司:

    请检查参考资料,看看这是否对您有用:

        2
  •  1
  •   Dimitre Novatchev    14 年前

    有没有一个表达会 匹配第一个和第三个“东西” 在我的例子中?

    你是说 :是否有一个表达式会 选择 第一个和第三个元素名为 thing ,基于它们的字符串值。

    使用 :

    /*/thing[. = 'Match this please']
    

    谓词比较 字符串值 字符串的上下文节点的 "Match this please" .

    根据定义 string value of an element 是其所有文本节点子代的连接(按文档顺序) .

    注意 : 总是尽量避免 // 缩写 因为它的使用可能会导致很大的效率低下。只要知道XML文档的结构,就使用一系列特定的位置步骤。