1

给出以下 XML 片段:

<?xml version="1.0" encoding="UTF-8"?>
<RootNode>
  <PR1>PR1</PR1>
  <ROL>one</ROL>*
  <ROL>two</ROL>*
  <DG1>DG1</DG1>
  <ROL>three</ROL>
  <ZBK>ZBK</ZBK>
  <ROL>four</ROL>
</RootNode>

是否可以使用 XPath 表达式选择 PR1 元素(标有星号的元素)后面的两个 ROL 元素,但不能选择其他 ROL 元素?我试过

//PR1/following-sibling::ROL

但这也会得到其他 ROL 段。有没有办法在第一次不匹配命中后停止 XPath 寻找元素?或者也许有另一种没有跟随兄弟的方法?

4

1 回答 1

2

我认为答案会更像这样:

<xsl:value-of select="//PR1[1]/following-sibling::ROL[
    generate-id( preceding-sibling::*[name() != 'ROL'][1])= generate-id(//PR1[1])
    ]" />

找到第一个 PR1 的下一个同级 ROL,其中
前一个同级(不是 ROL)与第一个 PR1 相同。

于 2013-04-26T10:31:40.093 回答