XML | XML-Schema | XPath | XSL-T | XSL-FO | XQuery | XProc | SVG |
XPath / XPath 3.1: Array / 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 / 22. April 2021
Fragen? Anmerkungen? Tipps?
Bitte nehmen Sie Kontakt zu mir auf.
V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn
☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de