我有一个XSL2.0版本,可以使用<xsl:sequence>删除重复项。我只是根据ID从下面的xml中删除重复的条目元素,另外,我需要考虑日期字段并删除旧的。或者,我可以删除一个不是当前日期的,因为新条目总是在当前日期盖章。在这种情况下,删除日期为2016-09-01 (粗体)的ID aces条目。请记住,无论日期如何,我都不想删除一个不是dup的条目。
<?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>提前谢谢你的帮助。
发布于 2016-12-19 08:05:08
按日期对组中的项进行排序,并仅输出最新的项(最后按升序排序或按降序排序排序):
<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>https://stackoverflow.com/questions/41214839
复制相似问题