如何使用 xpath 查找每个第一个后代元素



假设我有这个XML:

<p>
    <a>
        <b>
            <jedi></jedi>
            <c>
                <jedi></jedi>
            </c>
        </b>
    </a>
    <a>
        <b>
            <jedi></jedi>
            <c>
                <jedi></jedi>
            </c>
        </b>
    </a>
</p>

我想在<a>(2 个结果)下选择每个第一个jedi外观,而不管 <a> 下面的 xml 结构如何,我该怎么做?

当我尝试以下示例之一时,所有<jedi>都返回

  1. //a//jedi[1]
  2. //jedi[ancestor::a][1]

当我尝试使用下面的括号时,只返回第一个,而不是每个第一个。

    (//
  1. a//绝地)[1]

尝试//a/descendant::jedi[1]

例:

# tee < x >(java -cp Saxon-HE-9.5.1-5.jar net.sf.saxon.Query -s:- -qs:'//a/descendant::jedi[1]')
<p>
  <a>
    <b>
      <jedi>1</jedi>
      <c>
        <jedi>2</jedi>
      </c>
    </b>
  </a>
  <a>
    <b>
      <jedi>3</jedi>
      <c>
        <jedi>4</jedi>
      </c>
    </b>
  </a>
</p>
# <?xml version="1.0" encoding="UTF-8"?><jedi>1</jedi><jedi>3</jedi>

最新更新