I want to construct a map where the keys are attribute values and the entries
contain the elements that exhibit those attribute values. The obvious way to do
this is with for-each-group:
<xsl:variable name="links-by-target-id" as="map(xs:string, element()*)">
<xsl:map>
<xsl:for-each-group select="$docbook-links" group-by="@linkend">
<map:entry key="{current-grouping-key()}">
<xsl:sequence select="current-group()"/>
</map:entry>
</xsl:for-each-group>
</xsl:map>
</xsl:variable>
However, using Saxon 9.8.0.8 from Oxygen I get this message:
"Required item type of xsl:map sequence constructor is map(*); supplied value
(xsl:for-each-group) has item type element(). The expression can succeed only
if the supplied value is an empty sequence."
The XSLT spec says that the contents of <xsl:map> is a sequence constructor,
which for-each-group certainly is.
Is this message legit? I don't see how it can be but maybe I'm missing a
subtlety in the map instruction?
Thanks,
Eliot
--
Eliot Kimber
http://contrext.com
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--