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 / Stringfunktionen / XPath: substring, string-length

XPath: substring, string-length

XPath: substring, string-length

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

Die substring-Funktion hat mindestens zwei, optional drei Parameter:

Häufig kommt es vor, dass 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 muss von diesem Wert 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, dass 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 / 5. 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/substring.html