Это преобразование :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:key name="kElemByD" match="*" use="@d"/>
<xsl:template match="node()|@*" priority="-1">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template priority="1" match=
"*[generate-id()
=
generate-id(key('kElemByD', @d)[2])
]
">
<newNode>
<xsl:copy-of select="key('kElemByD', @d)/@*"/>
</newNode>
</xsl:template>
<xsl:template match=
"*[count(key('kElemByD', @d)) > 1]"/>
</xsl:stylesheet>
при применении к предоставленному XML (заключено в верхний элемент, чтобы стать правильно сформированным XML-документом):
<t>
<NODEA d="8" m="1" xxxxx="WWWWWWWWWWWWWW"/>
<NODEA d="16" m="1" xxxxx="somethingelse"/>
<NODEB d="1" m="1" yyyyy="xx"/>
<NODEB d="2" m="1" yyyyy="xx"/>
<NODEB d="3" m="1" yyyyy="yy"/>
<NODEB d="4" m="1" yyyyy="zz"/>
<NODEB d="5" m="1" yyyyy="aa"/>
<NODEB d="6" m="1" yyyyy="ss"/>
<NODEB d="7" m="1" yyyyy="33"/>
<NODEB d="8" m="1" yyyyy="AAAAAAAAAAAAA"/>
<NODEB d="9" m="1" yyyyy="qq"/>
</t>
дает требуемый, правильный результат :
<t>
<NODEA d="16" m="1" xxxxx="somethingelse"/>
<NODEB d="1" m="1" yyyyy="xx"/>
<NODEB d="2" m="1" yyyyy="xx"/>
<NODEB d="3" m="1" yyyyy="yy"/>
<NODEB d="4" m="1" yyyyy="zz"/>
<NODEB d="5" m="1" yyyyy="aa"/>
<NODEB d="6" m="1" yyyyy="ss"/>
<NODEB d="7" m="1" yyyyy="33"/>
<newNode d="8" m="1" xxxxx="WWWWWWWWWWWWWW" yyyyy="AAAAAAAAAAAAA"/>
<NODEB d="9" m="1" yyyyy="qq"/>
</t>
Объяснение : Метод Мюнхена для группировки.