Здесь вы делаете две вещи: дедуплицируете имя элемента, проверяете, все ли они имеют равные значения.
Эта таблица стилей
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:key name="kElement-By-Name" match="Node/*" use="name()"/>
<xsl:template match="nodes">
<Node>
<xsl:for-each
select="Node/*[
generate-id()=generate-id(key('kElement-By-Name',name())[1])
]">
<xsl:copy-of select="(.)[not(. != key('kElement-By-Name',name()))]"/>
</xsl:for-each>
</Node>
</xsl:template>
</xsl:stylesheet>
Выход
<Node>
<a>xxx</a>
<c>yyy</c>
</Node>
Обратите внимание : группировка для дедупликации, сравнение наборов узлов являются экзистенциальными (так что все одинаковы, если нет ни одного, который отличается)