基于条件排序xml节点

时间:2012-12-06 21:01:08

标签: xslt

我有以下xml:

<Candidate:candidateInfo>
  <Candidate:name> AAA</Candidate:name>
  <Candidate:age>16</Candidate:age>
  <Candidate:sex>M</Candidate:sex>
</Candidate:candidateInfo>
<Candidate:candidateInfo>
  <Candidate:name> BBB</Candidate:name>
  <Candidate:age>28</Candidate:age>
  <Candidate:sex>F</Candidate:sex>
</Candidate:candidateInfo>
<Candidate:candidateInfo>
  <Candidate:name>CCC</Candidate:name>
  <Candidate:age>28</Candidate:age>
  <Candidate:sex>M</Candidate:sex>
</Candidate:candidateInfo>

我需要按照候选年龄的升序对节点进行排序。在3个排序值中,如果相应的年龄大于18,我必须填充中位数(第2个中的3个)元素中的所有信息。否则我必须填充元素3中的值。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题:

<xsl:template match="/">
    <xsl:apply-templates select="Candidate:candidateInfo[number(Candidate:age) > 18]">
        <xsl:sort-by select="number(Candidate:age)"/>
    </xsl:apply-templates>
</xsl:template>

<xsl:template match="Candidate:candidateInfo">
    <xsl:copy-of select="."/>
</xsl:template>

此过滤器将删除19岁以下的所有candidateInfo元素。