如何在重复父节点下选择特定的LAST NODE值

时间:2015-06-29 05:51:00

标签: xml xslt xpath

有人可以给我[XPATH或模板]我需要获取最后一个ID的值。在名称节点的根目录中我需要考虑名称前四个名称]

在下面的示例中,我需要的值是GREEN3,只考虑前4个名称和4个最后一个ID。请提供代码片段

<NAMES>
  <NAME>
    <ID>GREEN1</ID>
  </NAME>
  <NAME>
    <ID2>GREEN6</ID2>
  </NAME>
  <NAME>
    <ID>GREEN2</ID>
  </NAME>
  <NAME>
    <ID>GREEN3</ID>
  </NAME>
  <NAME>
    <ID>GREEN4</ID>
  </NAME>
  <NAME>
    <ID2>GREEN5</ID2>
  </NAME>
</NAMES>   

2 个答案:

答案 0 :(得分:0)

根据您提供的内容,您可以尝试这样的内容

  <xsl:template match="NAMES" >
    <xsl:value-of select="NAME[4]/ID"/>
  </xsl:template>

由于只考虑前四个名称,并且您需要第四个NAME ID,因此您可以直接转到该节点并获取该值。

答案 1 :(得分:0)

你的问题不太清楚。如果您只想考虑前四个名称,并获得该组中的最后一个ID,那么您可以使用:

select="(/NAMES/NAME[position() &lt;=4]/ID)[last()]"

在以下示例中:

<NAMES>
  <NAME>
    <ID>a</ID>
  </NAME>
  <NAME>
    <ID>b</ID>
  </NAME>
  <NAME>
    <ID>c</ID>
  </NAME>
  <NAME>
    <ID>d</ID>
  </NAME>
  <NAME>
    <ID>e</ID>
  </NAME>
</NAMES>   

上面的表达式选择:

<ID>d</ID>

在这个例子中:

<NAMES>
  <NAME>
    <ID>a</ID>
  </NAME>
  <NAME>
    <ID>b</ID>
  </NAME>
  <NAME>
    <ID>c</ID>
  </NAME>
  <NAME>
    <IDx>d</IDx>
  </NAME>
  <NAME>
    <ID>e</ID>
  </NAME>
</NAMES> 

选择是:

<ID>c</ID>