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

XPath: remove

XPath: remove

➪ Die remove-Funktion löscht bestimmte Items (die sich aus ihrer Indexposition ergeben) aus einer Sequenz.

Zur Demonstration verwende ich auch hier eine Sequenzvariable "vseq", die sich aus einer vorab gefilterten () und (xsl:sort select="Gehalt") Itemliste ergibt.


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

Die Normalliste ergibt folgendes Ergebnis:


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

Resultat:


<m nr="1">Leinenlos</m>
<m nr="2">Muehelos</m>
<m nr="3">Ruhelos</m>
<m nr="4">Rielos</m>
<m nr="5">Herzlos</m>
<m nr="6">Wertlos</m>
<m nr="7">Bodenlos</m>

Löscht man nun mittels remove den Index "5", so erscheint die Liste ohne den vorherigen Eintrag "Herzlos".


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

Resultat:


<m nr="1">Leinenlos</m>
<m nr="2">Muehelos</m>
<m nr="3">Ruhelos</m>
<m nr="4">Rielos</m>
<m nr="5">Wertlos</m>
<m nr="6">Bodenlos</m>

Der Indexwert "5" lässt sich auch über ermitteln:


<xsl:call-template name="out">
  <xsl:with-param name="pseq" 
    select="remove($vseq, 
            index-of($vseq/name, 'Herzlos'))"/>
</xsl:call-template>

Zur Vervollständigung auch hier das aufgerufene Template "out".


<xsl:template name="out">
  <xsl:param name="pseq" as="item()*"/>
  <xsl:for-each select="$pseq">
    <m nr="{position()}">
      <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/remove.html