xsl-list
[Top] [All Lists]

[xsl] Please help me understand maps

2013-08-14 12:30:23
Hi Folks,

My understanding of a map is that it is an object containing a bunch of 
key/value pairs.

That seems pretty simple.

In the XSLT 3.0 specification it has this example:

<xsl:variable name="isbn-index" as="map(xs:string, element(book))"

Okay, $isbn-index is that name of a map. The keys for that map must be strings 
and the value associated to each key must be a <book> element.

Got it. 

Then the example assigns $isbn-index a value:

    select="map:new(for $b in //book return map{$b/isbn := $b})"/>

Yikes!

What is that?

Let me try to parse it: 

Step 1. Create a new map. That's what "map:new(...)" does.

Step 2. Loop through each <book> element. That's what "for $b in //book return 
..." does.

Step 3. For each <book> element create a map. That's what "map{$b/isbn := $b}" 
does. Huh? 

Step 1 creates a new map, so it should be assigned a bunch of key/value pairs, 
right? Step 3 is blasting it with a bunch of maps. Huh? Where are the new map's 
key/value pairs? I don't get it. Please help.

Oh! Perhaps since each "inner map" object contains just one key/value pair, 
each inner map object gets "unwrapped" to yield its key/value pair to the 
"outer map" object. Ha! How do you like that theory?

/Roger

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


<Prev in Thread] Current Thread [Next in Thread>