translate()-Funktion |
Diese Funktion gestattet Ihnen, einzelne Zeichen in einem String von einem Wert in einen anderen zu übersetzen. In vielen Sprachen ist diese Funktion leistungsfähig genug, Zeichen von der Kleinschreibung in die Großschreibung umzuwandeln, und umgekehrt.
Eingaben
Drei Strings. Der erste ursprüngliche, nicht übersetzte String und der zweite und dritte String definieren die zu konvertierenden Zeichen.
Ausgabe
Der ursprüngliche String, der wie folgt übersetzt wurde: Kommt ein Zeichen aus dem ursprünglichen String im zweiten Argument-String vor, wird es durch das entsprechende Zeichen im dritten Argument-String ersetzt. Anders ausgedrückt: wenn das Zeichen J im ursprünglichen String vorkommt und J erscheint als das vierte Zeichen im zweiten Argument-String, so wird das J durch das vierte Zeichen im dritten Argument-String ersetzt. (Keine Bange, durch einige Beispiele wird das Ganze gleich klarer.) Wenn ein Zeichen im ursprünglichen String im zweiten Argument-String erscheint und es gibt kein entsprechendes Zeichen im dritten Argument-String (der String des zweiten Arguments als länger ist als der des dritten), so wird das Zeichen gelöscht. Anders ausgedrückt: erscheint das Zeichen J im Original-String und als viertes Zeichen im zweiten Argument-String und der dritte Argument-String ist nur drei Zeichen lang, so wird das J gelöscht. Kommt ein Zeichen im zweiten Argument-String mehrmals vor, so bestimmt das erste Auftreten das Ersetzungszeichen. Ist der dritte Argument-String länger als der zweite, so werden die zusätzlichen Zeichen einfach ignoriert.
Definition
XPath-Abschnitt 4.2, Zeichenkettenfunktionen.
Beispiel
Hier ein Stylesheet mit mehreren Beispielen für die Funktion translate():
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <xsl:output method="text"/>

      <xsl:variable name="newline">
    <xsl:text>
    </xsl:text>
      </xsl:variable>

      <xsl:template match="/">
        <xsl:value-of select="$newline"/>
        <xsl:text>Tests of the translate() function:</xsl:text>

        <xsl:value-of select="$newline"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>Convert a string to uppercase:</xsl:text>
        <xsl:value-of select="$newline"/>
        <xsl:text>   translate('Doug', 'abcdefghijklmnopqrstuvwxyz', </xsl:text>
        <xsl:value-of select="$newline"/>
        <xsl:text>             'ABCDEFGHIJKLMNOPQRSTUVWXYZ')=</xsl:text>
        <xsl:value-of select="translate('Doug',
          'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
        <xsl:value-of select="$newline"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>Convert a string to lowercase:</xsl:text>
        <xsl:value-of select="$newline"/>
        <xsl:text>   translate('Doug', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', </xsl:text>
        <xsl:value-of select="$newline"/>
        <xsl:text>             'abcdefghijklmnopqrstuvwxyz')=</xsl:text>
        <xsl:value-of
          select="translate('Doug', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
                            'abcdefghijklmnopqrstuvwxyz')"/>
        <xsl:value-of select="$newline"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>Remove parentheses, spaces, and dashes</xsl:text>
        <xsl:text> from a U.S. phone number:</xsl:text>
        <xsl:value-of select="$newline"/>
        <xsl:text>   translate('(555) 555-1212', '() -', '')=</xsl:text>
        <xsl:value-of select="translate('(555) 555-1212', '() -', '')"/>
        <xsl:value-of select="$newline"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>Replace all but the last four digits of a </xsl:text>
        <xsl:text>credit card number with Xs:</xsl:text>
        <xsl:value-of select="$newline"/>
        <xsl:variable name="credit" select="'4918 3829 9920 1810'"/>
        <xsl:text>   $credit='</xsl:text>
        <xsl:value-of select="$credit"/>
        <xsl:text>'</xsl:text>
        <xsl:value-of select="$newline"/>
        <xsl:text>   translate(substring($credit, 1, 15), </xsl:text>
        <xsl:text>'1234567890 ', 'XXXXXXXXXX-')</xsl:text>
        <xsl:value-of select="$newline"/>
        <xsl:text>   substring($credit, 16)</xsl:text>
        <xsl:value-of select="$newline"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>   The first part is </xsl:text>
        <xsl:value-of
          select="translate(substring($credit, 1, 15), '123457890 ',
            'XXXXXXXXX-')"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>   The second part is </xsl:text>
        <xsl:value-of select="substring($credit, 16)"/>
        <xsl:value-of select="$newline"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>   Here's how they look together: </xsl:text>
        <xsl:value-of
          select="translate(substring($credit, 1, 15), '123457890 ',
            'XXXXXXXXX-')"/>
        <xsl:value-of select="substring($credit, 16)"/>
      </xsl:template>

    </xsl:stylesheet>
Hier das Ergebnis, wenn Sie das Stylesheet auf ein beliebiges XML-Dokument anwenden:
    Tests of the translate() function:

    Convert a string to uppercase:
       translate('Doug', 'abcdefghijklmnopqrstuvwxyz',
                 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')=DOUG

    Convert a string to lowercase:
       translate('Doug', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
                 'abcdefghijklmnopqrstuvwxyz')=doug

    Remove parentheses, spaces, and dashes from a U.S. phone number:
       translate('(555) 555-1212', '() -', '')=5555551212

    Replace all but the last four digits of a credit card number with Xs:
       $credit='4918 3829 9920 1810'
       translate(substring($credit, 1, 15), '1234567890 ', 'XXXXXXXXXX-')
       substring($credit, 16)

       The first part is XXXX-XXXX-XXXX-
       The second part is 1810

       Here's how they look together: XXXX-XXXX-XXXX-1810