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


XPath: translate

Zusammenfassung:

Die XPath-Funktion "translate" erlaubt, jedes Zeichen eines Strings gezielt durch ein anderes Zeichen zu ersetzen.

XPath: translate

Bei einfachster Verwendung der translate-Funktion wird jedes Zeichen, das bei einer Zeichenkette (erster Parameter) in einer zweiten Parameterliste steht, durch ein anderes Zeichen ersetzt, das in einer dritten Parameterliste an derselben Stelle steht.

Beispiel: die folgende Logik arbeitet eine Itemliste aus einem XML Input-Dokument ab. Nehmen wir an, einer der dort angesprochenen Namen sei "Sagblos". Durch Verwendung der translate-Funktion wird aus 'Sagblos' dann 'Sxgylos'.

  <xsl:for-each select="/Orte/Ort[1]/Mensch/name">
  	<xsl:value-of select="translate(., 'abc', 'xyz')" />  	
  </xsl:for-each>

Eine Variante ist, eine leere Zeichenkette als dritten Parameter zu übergeben. Dann werden alle Zeichen in dem zweiten Parameter gelöscht. Beispiel: Aus 'Sagblos' wird dann 'Sglos'.

<xsl:value-of select="translate(name, 'abc', '')" />

Das kann man sich für weitergehende Zwecke zunutze machen. Nehmen wir an, Sie hätten eine Zeichenkette 'ers1dhsfkh2lk3dg4+,5jklsd6sdlgk7lvg8dgs9hg?', in der auch weitere beliebige Zeichen enthalten sein können, und wollten daraus die Zahlen ermitteln; das Resultat würde in diesem Fall also lauten '123456789'.

Mit einem doppelten Einsatz der translate-Funktion wird zunächst eine Hilfsvariable mit dem Inhalt 'ersdhsfkhlkdg+,jklsdsdlgklvgdgshg?' generiert, die sämtliche Zeichen enthält, die nicht benötigt werden.

Anschließend wird in einem zweiten translate-Aufruf die ursprüngliche Zeichenkette übergeben, darin die nicht benötigten Zeichen, und als dritter Parameter eine leere Zeichenkette. Übrig bleibt '123456789'.

<xsl:variable 
  name="vstr">ers1dhsfkh2lk3dg4+,5jklsd6sdlgk7lvg8dgs9hg?</xsl:variable>
<xsl:variable name="vstr2">
  <xsl:value-of select="translate($vstr, '0123456789', '')" />
</xsl:variable>
<xsl:value-of select="translate($vstr, $vstr2, '')" />

qrpic/translate.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