Controlling duplicates on xsl:map

The on-duplicates attribute can be specified on xsl:map to control what happens when two entries in the map would have the same key (in XSLT 3.0 this is always an error). The value of the attribute is an expression, which must evaluate to a function. The function is called when an entry in the map would conflict with an existing entry. It is supplied with two arguments, the value of the existing entry and the value of the new entry, and it returns a new value to be associated with the duplicate key (or it can throw an error, to replicate the default behavior). For example on-duplicates="->($old, $new){$old, $new} causes the new value to be the sequence-concatenation of the supplied values, while on-duplicates="->($old, $new){$old || ',' || $new} concatenates the values with comma as a separator. Specifying on-duplicates="->($old, $new){$old} takes the first of the duplicates, while on-duplicates="->($old, $new){$new} takes the last.

See also xsl:map.