deep-equal
适用于地图,所以一种方法是
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="3.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="#all">
<xsl:variable name="sequence" select="
( map { 'foo' : 1, 'bar' : () },
map { 'foo' : 1, 'bar' : '3' },
map { 'foo' : 1, 'bar' : '3' } )" as="map(xs:string,item()*)*"/>
<xsl:output method="adaptive"/>
<xsl:template match="/" name="xsl:initial-template">
<xsl:sequence
select="fold-left($sequence, (), function($a, $m) { $a, $m[not(some $m2 in $a satisfies deep-equal($m, $m2))] })"/>
</xsl:template>
</xsl:stylesheet>