Iterating over maps and arrays
The three instructions xsl:for-each,
xsl:iterate, and
xsl:for-each-group
can take an attribute array
or map
in place of
the select
attribute.
If array
is specified, the instruction iterates over the selected array. Specifically, the
body of the instruction is evaluated with the context item being a parcel containing the items making
up the corresponding member of the array; these items may be extracted with the fn:unparcel()
function, or simply with the lookup expression ?value
. For example:
outputs 1 3 11 2
.
If map
is specified, the instruction iterates over the selected map. Specifically, the
body of the instruction is evaluated with the context item being a map containing two entries:
an entry named "key" holding the key, and an entry named "value" holding the corresponding value.
The order of entries is undefined (but <xsl:sort select="?key"/>
can be used to sort them).