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 / XPath: map:find

XPath: map:find

XPath: map:find

map:find sucht in einer Sequenz bzw. einem Map-Array nach Map-Entries, die den gesuchten Schlüssel beinhalten, und gibt die jeweiligen Werte zurück.

Signatur:


map:find($input as item()*, $key as xs:anyAtomicType) as array(*)

Siehe https://www.w3.org/TR/xpath-functions-31/#func-map-find

Die XSL-Variable vmaparray generiert ein Array aus mehreren Maps, die jeweils dieselben Schlüssel (0, 1) beinhalten. Je nach Map haben diese Schlüssel jedoch unterschiedliche Werte. Im Fall "e" gibt es davon eine verkettete Sequenz.


<find>
  <xsl:variable name="vmaparray" 
       select="[
                map{0:'a', 1:'b'}, 
                map{0:'c', 1:'d'}, 
                map{0:'e', 1:('f', 'g')}
               ]"/>				
	<xsl:value-of select="map:find($vmaparray, 1)"/>					
</find>

map:find sucht in diesem "vmaparray" nach dem Schlüssel "1" und gibt dessen Einzelwerte zurück:


<find>b d f g</find>

Das vorige Beispiel können Sie noch etwas komplexer gestalten durch die Einführung einer XML-basierten, union- (oder except- oder intersect-) basierten Sequenz, die zu einem Teil jener Map wird, deren Schlüssel "0" den Inhalt "e" hat.


<find>
 <xsl:variable name="vseq" 
      select="(//Ort[1], //Ort[2]) union (//Ort[2], //Ort[3])"/>
 <xsl:variable name="vmaparray" 
      select="[
               map{0:'a', 1:'b'}, 
               map{0:'c', 1:'d'}, 
               map{0:'e', 1:( $vseq/name )}]"/>    
 <xsl:value-of select="map:find($vmaparray, 1)"/>  
</find>

map:find sucht in diesem "vmaparray" nach dem Schlüssel "1" und gibt auch hier dessen Einzelwerte zurück:


<find>b d Neustadt Darmstadt Kapstadt</find>

wg / 7. April 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/map4.html