[xsl] Returning item type of variable (problems with maps)

Subject: [xsl] Returning item type of variable (problems with maps)
From: David Rudel <fwqhgads@xxxxxxxxx>
Date: Wed, 26 Mar 2014 23:57:30 +0100
Is there a simple way to report the type of a variable for de-bugging purposes?

In particular, I'm looking for a way to report the function signature
of a map because I'm getting an error that is very difficult for me to
be debug otherwise.

Here is what I have:

<xsl:variable name="daily.fact.map" as="map(xs:date,map(xs:string,xs:string*))">
      Inside this function, there is an iterate instruction that spits out...
      <xsl:variable name="putative.map" as="map(xs:string,xs:string*)">
            <xsl:for-each-group select="map:keys($fact.state.map)"
               <xsl:map-entry key="current-grouping-key()"

       <xsl:map-entry key="xs:date($date)">
          <xsl:sequence select="$putative.map"/>

I am getting the error message

XTTE0570: Required item type of value of variable $daily.fact.map is
(map(xs:date, (map(xs:string, xs:string*))

This is not very helpful in terms of telling me what is going wrong.
I'd like to have the processor tell me what type of item it thinks is
being produced for $daily.fact.map is so I could figure out what is
the problem.

Note that, based on the definitions of the other maps, I don't
understand how there can be a problem:

<xsl:param name="fact.state.map" select="map:new()"

<xsl:variable name="list.map" as="map(xs:string,xs:string+)">

And since $putative.map is of required-type map(xs:string,xs:string*)
and is not flagged as an error, and xs:date($date) is not being
flagged as an error, then how can the <xsl:map-entry> instruction be
producing the wrong item type?



"A false conclusion, once arrived at and widely accepted is not
dislodged easily, and the less it is understood, the more tenaciously
it is held." - Cantor's Law of Preservation of Ignorance.

Current Thread