第一个词的 XPath?

XPath for first word?

为此 HTML / XML:

<div class="contentBlock">
  <h2> </h2>
  <h1></h1>
  <h1>DBS055 - single  module packages</h1>
</div>

我只想使用 XPath 提取 DBS055,而不是整个文本。

XPath 2.0

//h1[normalize-space()]/replace(normalize-space(),'^([\w\-]+).*', '')

将 return 字符串值中具有非 space 字符的那些 h1 元素的字符串值的所有第一个单词。

XPath 1.0

substring-before(
  concat(
    normalize-space(
      translate(//h1[normalize-space()][1], ',;/.', ' ')), ' '), ' ')

近似于更强大的 XPath 2.0 解决方案。根据需要为您考虑定义单词边界的各种字符展开 ',;/.'

解释:

  1. Select 具有非白色 space-only 字符串值的第一个 h1
  2. 将所有单词边界字符映射到 spaces.
  3. 追加 space 以涵盖单个单词的大小写。
  4. 标准化间距。
  5. Return 第一个 space.
  6. 之前的子字符串