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.

substring, string-length

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 / 6. November 2017



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

Mobil: 0151. 750 360 61 * eMail: info2018@wilfried-grupe.de

www.wilfried-grupe.de/substring.html