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

XPath: remove

XPath: remove

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

Zur Demonstration verwenden wir auch hier eine Sequenzvariable "vseq", die sich aus einer vorab gefilterten ("contains") und sortierten (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". Dieser Indexwert "5" läßt sich auch über "index-of" ermitteln.


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

Dasselbe Ergebnis wird erzielt durch den Einsatz von "index-of":


<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 / 9. Februar 2018



Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf:

Vorname
Nachname
Mailadresse







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