Вот опция XSLT 1.0 ...
Таблица стилей XSLT 1.0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:key name="kPayloads" match="payload" use="concat('N',name,'D',date)"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="payloads">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates select="payload[generate-id() = generate-id(key('kPayloads', concat('N',name,'D',date)))]"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Ввод XML (правильно сформированный)
<payloads>
<payload>
<name>1</name>
<date>2</date>
</payload>
<payload>
<name>1</name>
<date>2</date>
</payload>
<payload>
<name>10</name>
<date>20</date>
</payload>
<payload>
<name>1</name>
<date>2</date>
</payload>
</payloads>
Вывод XML
<payloads>
<payload>
<name>1</name>
<date>2</date>
</payload>
<payload>
<name>10</name>
<date>20</date>
</payload>
</payloads>
Редактировать
Эта таблица стилей XSLT 2.0 также выдаст тот же результат ...
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="payloads">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:for-each-group select="payload" group-by="concat('N',name,'D',date)">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>