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

3

假设我有以下XML:

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

我想要选择每个第一个出现在<a>标签下的jedi (2个结果),不论<a>标签下方有怎样的xml结构,我该如何做?
当我尝试以下两个示例时,所有的<jedi>都会返回。
  1. //a//jedi[1]
  2. //jedi[ancestor::a][1]
当我尝试使用括号时,只有非常第一个结果被返回,而不是每个第一个结果。
  1. (//a//jedi)[1]

1个回答

4
尝试使用//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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接