XPath 3.0, XPath 2.0, XPath 1.0 / XPath Funktionen / Stringfunktionen / substring, string-length

substring, string-length

substring, string-length

➪ Die XPath-Funktion "substring" erlaubt, aus einer Zeichenkette einen Teilstring zu ermitteln.

Die "substring"-Funktion hat mindestens 2, optional drei Parameter:

Häufig kommt es vor, daß nur die letzten z.B. drei Buchstaben eines Strings verwendet werden sollen. Dazu ist erforderlich, zuerst die Länge des Gesamtstrings zu erfassen, dies geschieht mit "string-length". Ist die gesamte Stringlänge von "Sinnlos" 7, dann muß dieser Wert um 2 subtrahiert werden, um die Startposition 5 für den Substring zu erhalten. Das Resultat lautet dann "los".

Adressiert wird die Menge der relevanten Nodes über XPath "Orte/Ort[1]/Mensch", also alle Childnodes "Mensch" im ersten "Ort" (also Ort[1] = Ort[position() = 1].


<xsl:for-each select="Orte/Ort[1]/Mensch">
  <xsl:value-of select="substring(name, string-length(name)-2)" />
  <xsl:if test="position() != last()">
    <xsl:text>, </xsl:text>
  </xsl:if>
</xsl:for-each>

Umgekehrt kommt es vor, daß lediglich die ersten Zeichen eines Strings gesucht werden, die letzten drei Zeichen müssen jedoch abgeschnitten werden. Auch hier kommt wieder substring in Kombination mit string-length zum Einsatz. Hier ist der zweite Parameter jedoch die erste Position (1) des Strings, der zweite Substring-Parameter ermittelt die Stringlänge abzüglich der letzten drei Stellen.


<xsl:for-each select="/Orte/Ort[1]/Mensch">
  <xsl:value-of 
       select="substring(name, 
                         1, 
                         string-length(name)-3)" />
</xsl:for-each>

Sind die betreffenden letzten drei Buchstaben bekannt, z.B. 'los', so kommt alternativ auch substring-before zum Einsatz:


<xsl:value-of select="substring-before(name, 'los')"/>

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