XSLT 对具有不同日期的重复元素更具体地使用序列 select

XSLT more specific use of sequence select for duplicate elements with different dates

我有一个 XSL 2.0 版可以使用 <xsl:sequence> 删除重复项。我只是根据 ID 从下面的 xml 中删除重复的 Entry 元素。此外,我需要考虑日期字段并删除旧的。或者,我可以删除不是当前日期的条目,因为新条目始终标记为当前日期。在这种情况下,删除日期为 2016-09-01(粗体)的 ID ace 条目。请记住,无论日期如何,我都不想删除不是复制品的条目。

<?xml version='1.0' encoding='utf-8'?>
<Data>
    <Entry>
        <ID>aces</ID>
        <Info>
            <Code2>0006</Code2>
            <AMOUNT>7.52<AMOUNT>            
        <Info>
        <Date>2016-12-18-05:00</Date>
    </Entry>
    <Entry>
        <ID>chawk</ID>
        <Info>
            <Code2>0007</Code2>
            <AMOUNT>7.53<AMOUNT>            
        <Info>
        <Date>2016-11-01-05:00</Date>
    </Entry>
     **<Entry>
        <ID>aces</ID>
        <Info>
            <Code2>0006</Code2>
            <AMOUNT>7.53<AMOUNT>            
        <Info>
        <Date>2016-09-01-05:00</Date>
    </Entry>**
</Data>

这是我当前的 XSL:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>

    <xsl:template match="/*">
        <Data xmlns:xs="http://www.w3.org/2001/XMLSchema">
            <xsl:for-each-group select="Entry" group-by="ID">
                <xsl:sequence select="."/>
            </xsl:for-each-group>
       </Data>
    </xsl:template>
</xsl:stylesheet>

在此先感谢您的帮助。

按日期对组中的项目进行排序,只输出最新的项目(升序排在最后或降序排在第一):

<xsl:template match="/*">
    <Data xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xsl:for-each-group select="Entry" group-by="ID">
            <xsl:for-each select="current-group()">
                <xsl:sort select="Date" order="descending"/>
                <xsl:if test="position() eq 1">
                    <xsl:copy-of select="."/>
                </xsl:if>
            </xsl:for-each>
        </xsl:for-each-group>
   </Data>
</xsl:template>