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

时间:2016-02-02 10:06:24

标签: xpath

假设我有这个XML:

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

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

当我尝试以下其中一个示例时,所有<jedi>都返回了

  1. //a//jedi[1]
  2. //jedi[ancestor::a][1]
  3. 当我尝试使用下面的括号时,只返回第一个,而不是每个第一个。

    1. (// //一个绝地)[1]

1 个答案:

答案 0 :(得分:3)

尝试//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>