Subject: Re: [xsl] Map duplicate handling differences From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Fri, 9 Dec 2022 16:34:45 -0000 |
This shortcoming of xsl:map has been noted: https://github.com/qt4cg/qtspecs/issues/169 Saxon 11 with XSLT 4.0 enabled already supports the proposed on-duplicates attribute, for example <xsl:map on-duplicates="function($x, $y){$x}"> which achieves the effect of use-first in map:merge. Michael Kay Saxonica On 9 Dec 2022, at 16:08, Martin Honnen martin.honnen@xxxxxx<mailto:martin.honnen@xxxxxx> <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx<mailto:xsl-list-service@xxxxxxxxxxxx rytech.com>> wrote: Am 12/9/2022 um 4:51 PM schrieb Michael Mueller-Hillebrand michael.mueller-hillebrand@xxxxxxxxx<mailto:michael.mueller-hillebrand@docufy .de>: Hello Friday folks, I have noticed that the duplicate handling when constructing maps is different and I would like to understand the reason. When using <xsl:map> with <xsl:map:entry> the transformer rejects duplicate keys with a runtime error. <xsl:variable name="pairsMap" as="map(xs:string, xs:string)"> <xsl:map> <xsl:for-each select="tokenize($pairsString, ';')"> <xsl:map-entry key="substring-before(., '=')" select="substring-after(., '=')"/> </xsl:for-each> </xsl:map> </xsl:variable> When using map:merge() without any extra options it uses duplicates:use-first (I learned I can turn on brejectb or buse-lastb or bcombineb): <xsl:variable name="pairsMap" as="map(xs:string, xs:string)" select="map:merge( for $t in tokenize($pairsString, ';') return map:entry(substring-before($t, '='), substring-after($t, '=')))"/> Have I overlooked a way to define options in the xsl:map case? Or is this a subtle way to get us to move to inline XPath? XSLT 4 is going to remedy that shortcoming, see https://qt4cg.org/specifications/xslt-40/Overview-diff.html#duplicate-keys and <!-- Category: instruction --> <xsl:map on-duplicates? = expression > <!-- Content: sequence-constructor --> </xsl:map> XSL-List info and archive<http://www.mulberrytech.com/xsl/xsl-list> EasyUnsubscribe<http://lists.mulberrytech.com/unsub/xsl-list/293509> (by email<>)
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Map duplicate handling di, Martin Honnen martin | Thread | Re: [xsl] Map duplicate handling di, Graydon graydon@xxxx |
Re: [xsl] Map duplicate handling di, Martin Honnen martin | Date | Re: [xsl] Map duplicate handling di, Graydon graydon@xxxx |
Month |