Gern stehe ich zur fachlichen Unterstützung in XML-Technologien, C#.NET, VisualBasic.NET und Java zur Verfügung. Sprechen Sie mich einfach an: Mail oder ☎ 0151 . 750 360 61


XPath 3.0, XPath 2.0, XPath 1.0 / XPath-Funktionen / XPath: Sequenz-Funktionen / XPath: reverse

XPath: reverse

XPath: reverse

➪ Die reverse-Funktion kehrt die Reihenfolge der Items in einer Sequenz um.


<xsl:variable 
     name="vinfo" 
     select="'Pferd', 'tritt', 'Mann'"/>
<xsl:value-of select="reverse($vinfo)"/>

Das Ergebnis lautet dann:


Mann tritt Pferd

Wie bei und , können Sie auch hier mit einer Variablen "vseq" als Itemliste arbeiten. (Damit das Ergebnis nicht immer dasselbe ist, sortieren Sie die Itemliste noch einmal aufsteigend nach Gehalt.)


<xsl:variable name="vseq" as="item()*" >
    <xsl:for-each 
         select="//Mensch[contains(name, 'e')]">
        <xsl:sort 
             select="Gehalt" 
             data-type="number" 
             order="ascending"/>
        <xsl:copy-of select="."/>
    </xsl:for-each>
</xsl:variable>

Der normale Abarbeitung dieser Sequenz über das separate Template "out" (siehe unten) ergibt das urspüngliche Resultat.


<xsl:call-template name="out">
    <xsl:with-param name="pseq" select="$vseq"/>
</xsl:call-template>

Resultat:


<m nr="1" Gehalt="135">Leinenlos</m>
<m nr="2" Gehalt="222">Muehelos</m>
<m nr="3" Gehalt="234">Ruhelos</m>
<m nr="4" Gehalt="456">Rielos</m>
<m nr="5" Gehalt="654.21">Herzlos</m>
<m nr="6" Gehalt="777.77">Wertlos</m>
<m nr="7" Gehalt="3450">Bodenlos</m>

Die reverse-Funktion kehrt diese Reihenfolge um:


<xsl:call-template name="out">
    <xsl:with-param 
         name="pseq" 
         select="reverse($vseq)"/>
</xsl:call-template>

Alternativ hätten Sie auch sortieren können:


<xsl:sort 
     select="Gehalt" 
     data-type="number" 
     order="descending"/>

Das Resultat ist jedenfalls:


<m nr="1" Gehalt="3450">Bodenlos</m>
<m nr="2" Gehalt="777.77">Wertlos</m>
<m nr="3" Gehalt="654.21">Herzlos</m>
<m nr="4" Gehalt="456">Rielos</m>
<m nr="5" Gehalt="234">Ruhelos</m>
<m nr="6" Gehalt="222">Muehelos</m>
<m nr="7" Gehalt="135">Leinenlos</m>

Zur Vervollständigung folgt hier noch das Template "out", das für die o.a. Ausgabe sorgen soll.


<xsl:template name="out">
     <xsl:param name="pseq" as="item()*"/>
     <xsl:for-each select="$pseq">
          <m nr="{position()}" 
             Gehalt="{Gehalt}">
             <xsl:value-of select="name"/>
          </m>
     </xsl:for-each>
</xsl:template>

wg / 4. April 2018



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