如何对<xsl:variable>的内容进行排序

时间:2017-03-30 21:29:50

标签: xml sorting xslt

<?xml version="1.0" encoding="UTF-8"?>
<sortedResults xmlns="urn:com-avaneesh-abc:v1">
    <result time-zone="America/Chicago" event-end-dt-tm="2013-06-11T15:37:00.000-05:00"
                        event-id="16886888"/>
    <result time-zone="America/Chicago" event-end-dt-tm="2013-06-13T15:37:00.000-05:00"
                        event-id="16886890"/>
    <result time-zone="America/Chicago" event-end-dt-tm="2013-06-10T15:37:00.000-05:00"
                        event-id="16886884"/>
    <result time-zone="America/Chicago" event-end-dt-tm="2013-06-10T15:37:00.000-05:00"
                        event-id="16886878"/>
    <result time-zone="America/Chicago" event-end-dt-tm="2013-06-13T15:37:00.000-05:00"
                        event-id="16886886"/>
    <result time-zone="America/Chicago" event-end-dt-tm="2013-06-11T15:37:00.000-05:00"
                        event-id="1688687416886876"/>
</sortedResults>

我想对上面的示例XML进行排序,该示例XML是<xsl:variable>的一部分,由每个event-end-dt-tm的{​​{1}}排序,并将最新日期移到一个XML标记下<result><first>下最早,<last>下标有余下的<other>。我尝试使用<xsl:sort>,但它没有按预期排序。

1 个答案:

答案 0 :(得分:0)

此XSLT-1.0将对<result>的所有<sortedResults>个孩子按属性@event-end-dt-tm进行排序,同时对命名空间urn:com-avaneesh-abc:v1具有名称空间感知功能:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:ava="urn:com-avaneesh-abc:v1">
  <xsl:output method="xml" />

  <xsl:template match="/ava:sortedResults">
    <xsl:apply-templates>
      <xsl:sort select="@event-end-dt-tm" />
    </xsl:apply-templates>
  </xsl:template>

  <xsl:template match="ava:result">
    <!-- Put your desired processing here !!! -->
    <xsl:value-of select="@event-id" /><xsl:text>&#10;</xsl:text>  <!-- For example the @event-id followed by a newline -->
  </xsl:template>

</xsl:stylesheet>