Home
Über mich
Blog
Veröffentlichungen
IT-Trainings
Impressum


XPath: normalize-space

Zusammenfassung:

Die "normalize-space"-Funktion löscht führende und schließende Leerzeichen in einem String.

XPath: normalize-space

Im einfachsten Fall sieht das so aus:

<xsl:variable name="x" as="xs:string">    1  2  3  4  5   </xsl:variable>
<ergebnis>
<xsl:value-of select="normalize-space($x)"/>
</ergebnis>

Das Ergebnis lautet:

<ergebnis>1 2 3 4 5</ergebnis>

Wichtig ist dabei, daß die übergebene Zeichenkette einen einzigen String darstellt, nicht aber eine Sequenz aus mehreren Strings. Um auch diese Konstellation zu bewältigen, können wir uns die "string-join"-Funktion zu Hilfe nehmen, die aus einer Sequenz wieder einen String erstellt.

Um ein Beispiel zu generieren, können wir eine zweite Variable "y" anlegen, die über das Komma (",") eine Sequenzverkettung durchführt:

<xsl:variable name="y" as="xs:string+">
  <xsl:for-each select="'   ', 1 to 5, '      '">
    <xsl:value-of select="."/>
  </xsl:for-each>
</xsl:variable>

Der Aufruf der "normalize-space"-Funktion mit dieser Sequenz ...

<xsl:value-of select="normalize-space($y)"/>

... hätte die Fehlermeldung zur Folge:

A sequence of more than one item is not allowed 
as the first argument of normalize-space() ("", "1", ...)

Den generierten String können wir uns mit Hilfe der "string-join"-Funktion verdeutlichen, die aus der Sequenz einen String mit führenden und schließenden Leerzeichen generiert.

<xsl:value-of select="string-join($y, '|')"/>

Im Ergebnis haben wir also den folgenden String einschließlich führender und schließender Leerstellen.

'   |1|2|3|4|5|      '

Wollen wir keine Trennzeichen zulassen, so kann der Aufruf lauten:

<xsl:value-of select="string-join($y, '')"/>

Ergebnis:

'    1 2 3 4 5       '

Die "normalize-space"-Funktion verkürzt diese Ausgabe.

<xsl:value-of select="normalize-space( string-join($y, ''))"/>

Das Ergebnis lautet dann:

'1 2 3 4 5'

qrpic/normalizespace.jpg

wg / 14. Oktober 2017




Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf (info10@wilfried-grupe.de).



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: info10@wilfried-grupe.de