Re: [xsl] Using QNames as keys in maps

Subject: Re: [xsl] Using QNames as keys in maps
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 15 Feb 2018 09:50:56 -0000
> But I would have expected this to work also (but it doesnbt):
>
> <xsl:template match="/">
>   <xsl:variable name="qmap" as="map(xs:QName, item())" select="map{ Q{}xx:
'aaa' }"/>
>   <RESULT size="{map:size($qmap)}">
>     <xsl:value-of select="map:get($qmap, Q{}xx)"/>
>   </RESULT>
> </xsl:template>

The expression xx means ./child::xx, it does not mean the QName ("", "xx");
and the same remains true if you write it as Q{}xx. Bare names in XPath
expressions are short-hand for a selection on the child axis.

It's a shame that we didn't add a QName constructor function taking an EQName
as input, something like QName("{}xx"); but that wouldn't be very much of a
convenience over QName("", "xx") unless you are reading the EQName from
somewhere else.

Michael Kay
Saxonica

Current Thread