Home
Über mich
Veröffentlichungen

XML XML-Schema XPath XSL-T XSL-FO XQuery XProc SVG

XPath / XPath-Funktionen / XPath: Sequenz-Funktionen / XPath 3.1: Map, xsl:map / Weitere Beispiele

Weitere Beispiele

Weitere Beispiele

➪ Hier finden Sie weitere Beispiele zum Thema map und array.

Eine Map, die als Key ausgewählte Zahlen und als Value deren jeweilige Summe von 1 bis zu dieser Zahl beinhaltet, erhalten Sie auf diese Weise:


<xsl:template match="/">
  <ergebnis>
    <xsl:variable name="vmapi" 
         as="map(xs:integer, xs:integer)">
      <xsl:map>
        <xsl:for-each select="9 to 19">
          <xsl:variable name="v" select="." as="xs:integer"/>
          <xsl:map-entry
               key="xs:integer($v)" 
               select="xs:integer( sum(1 to $v))"/>
        </xsl:for-each>      
      </xsl:map>
    </xsl:variable> 
    <xsl:for-each select="map:keys($vmapi)">
      <key nr="{.}">
        <xsl:value-of select="map:get($vmapi, .)"/>
      </key>
    </xsl:for-each>
  </ergebnis>
</xsl:template>

Das Ergebnis finden Sie hier:


<ergebnis>
   <key nr="9">45</key>
   <key nr="10">55</key>
   <key nr="11">66</key>
   <key nr="12">78</key>
   <key nr="13">91</key>
   <key nr="14">105</key>
   <key nr="15">120</key>
   <key nr="16">136</key>
   <key nr="17">153</key>
   <key nr="18">171</key>
   <key nr="19">190</key>
</ergebnis>

Arbeiten mit map und array

Das folgende Beispiel generiert eine map mit mehreren Einzelmaps, deren jeweiliger Value aus einem Array besteht.

Siehe auch XPATH 3.1 mit map und array.


declare namespace map = "http://www.w3.org/2005/xpath-functions/map";
declare namespace array ="http://www.w3.org/2005/xpath-functions/array";
map:merge(
  for-each(
    ((1 to 7), (3 to 10) )=>distinct-values(),
    function($p){
     map{$p : array{ ( 1 to $p) } } 
    }         
  )       
)
=> map:for-each(function ($k, $v){$k || ': ' || 
      string-join(
        ($v =>array:head(),
         $v =>array:tail(),
         $v => sum(),
         $v => avg()
       )
      , ';')
  }
)  

ergibt


1: 1;1;1
2: 1;2;3;1.5
3: 1;2;3;6;2
4: 1;2;3;4;10;2.5
5: 1;2;3;4;5;15;3
6: 1;2;3;4;5;6;21;3.5
7: 1;2;3;4;5;6;7;28;4
8: 1;2;3;4;5;6;7;8;36;4.5
9: 1;2;3;4;5;6;7;8;9;45;5
10: 1;2;3;4;5;6;7;8;9;10;55;5.5

wg / 7. April 2020



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.




xsl:map



Vielen Dank für Ihr Interesse an meiner Arbeit.



V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/map11.html