C#.NET * C++ * JAVASCRIPT * PYTHON * DIVERSES
XML * XML-SCHEMA * XPATH * XSL * XSL-FO * SVG * XQUERY * XPROC * ANT



XSL / Die XSLT - Struktur / XPath 3.1: Array / XPath: array:join

XPath: array:join

XPath: array:join

➪ Ein Array ist ein neuer Datentyp in XDM 3.1 mit umfangreicher Funktionalität, der als ein Item einer Sequenz zu betrachten ist.

Die XPath-Funktion array:join verkettet den Inhalt diverser Arrays in ein einziges Array.

Die Variable "vjoin" macht genau dieses: Sie verkettet drei Arrays in eines. Die Einzelarrays bestehen aus:


<xsl:variable name="vjoin" 
     select="array:join((['Hugo', 'Lotte'], 
                         ['Theo', 'Tanja'], 
                         ['Maxi']))"/>

Der abermalige Aufruf mit array:size und array:get ...


<xsl:template match="/"> 
  <root>   
    <xsl:for-each select="1 to array:size($vjoin)">
     <xsl:variable name="vpos" select="fn:position()"/>
     <wert nr="{$vpos}">
      <xsl:value-of select="array:get($vjoin, $vpos)"/>
     </wert>
    </xsl:for-each>
  </root>
</xsl:template>

... bringt dieses Resultat ans Licht:


<root>
  <wert nr="1">Hugo</wert>
  <wert nr="2">Lotte</wert>
  <wert nr="3">Theo</wert>
  <wert nr="4">Tanja</wert>
  <wert nr="5">Maxi</wert>
</root>

Eine Verkettung ist auch in anderer Weise möglich, wie das XQuery-Beispiel zeigt:


declare namespace array="http://www.w3.org/2005/xpath-functions/array";
let $input := 
<a>
  <b>
    <c>
        <ID>123</ID>
        <Vorname>Theo</Vorname>
    </c>
    <c>
        <ID>456</ID>
        <Vorname>Tanja</Vorname>
    </c>
  </b>
</a>
let $array1 := array{ ($input/b/c/ID/text()) }  
let $array2 := array{ ($input/b/c/Vorname/text()) }  
let $myarray := array{ ($array1), ($array2) }
return array:get($myarray, 2)

Der Zugriff auf das zweite Element des verkettetes Arrays ergibt dieses Resultat:


[Theo, Tanja]

wg / 31. Oktober 2020



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.






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/xpath_array10.html