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:sort

XPath: array:sort

XPath: array:sort

➪ 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:sort generiert ein Array, das alle Items des ursprünglichen Arrays beinhaltet, jedoch in sortierter Reihenfolge. Dabei ist es möglich, optional eine Collation sowie (ebenfalls optional) eine Funktion einzubinden.

Das einfachste Beispiel finden Sie hier: Die generierte Reihenfolge 4,5,6,1,2,3,7,8,9 ...


<xsl:variable name="vsorted" 
     select="array:sort( array{ (4 to 6), (1 to 3),  (7 to 9)})"/> 

wird durch array:sort aufsteigend sortiert:


<root>
  <wert nr="1">1</wert>
  <wert nr="2">2</wert>
  <wert nr="3">3</wert>
  <wert nr="4">4</wert>
  <wert nr="5">5</wert>
  <wert nr="6">6</wert>
  <wert nr="7">7</wert>
  <wert nr="8">8</wert>
  <wert nr="9">9</wert>
</root>

Der zusätzliche Einsatz einer Collation sorgt dafür, dass beispielsweise bestimmte Sonderzeichen wie "ß" gleichwertig mit "ss" behandelt werden. Eine solche Collation ist die Zeichenkette 'http://www.w3.org/2013/collation/UCA?lang=de;strength=primary', die als zusätzlicher Parameter übergeben wird (anstelle von "(: Collation-Zeichenkette :)").


<xsl:variable 
     name="vsorted2" 
     select="array:sort(
             ['Straße2', 
              'Strasse1', 
              'Weg', 
              'Straße1', 
              'Strasse2', 
              'Pfad'], 
             (: Collation-Zeichenkette :)
             )"/>

Das Sortierungsergebnis ohne Verwendung der Collation hat diesen Aufbau:


<root>
  <wert nr="1">Pfad</wert>
  <wert nr="2">Strasse1</wert>
  <wert nr="3">Strasse2</wert>
  <wert nr="4">Straße1</wert>
  <wert nr="5">Straße2</wert>
  <wert nr="6">Weg</wert>
</root>

Das Sortierungsergebnis mit Verwendung der Collation bietet ein anderes Resultat:


<root>
  <wert nr="1">Pfad</wert>
  <wert nr="2">Strasse1</wert>
  <wert nr="3">Straße1</wert>
  <wert nr="4">Straße2</wert>
  <wert nr="5">Strasse2</wert>
  <wert nr="6">Weg</wert>
</root>

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_array15.html