使用XPath立即选择相同元素的XML元素

时间:2013-04-26 09:19:52

标签: xml xpath siblings

给出以下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>

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

//PR1/following-sibling::ROL

但这也会获得其他ROL细分。有没有办法在第一次非匹配命中后阻止XPath查找元素?或者也许还有另一种方法没有跟随兄弟姐妹?

1 个答案:

答案 0 :(得分:2)

我认为答案更像是这样:

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

找到第一个PR1的以下兄弟ROL,其中
  previous-sibling(不是ROL)与第一个PR1相同。