string-length()-Funktion |
Diese Funktion gibt die Anzahl der Zeichen in dem String zurück, der als Argument an die Funktion übergeben worden ist. Ohne Argument wird der Kontextknoten in einen String konvertiert und seine Länge zurückgegeben.
Eingaben
Ein optionaler String.
Ausgabe
Die Anzahl der im String definierten Zeichen.
Definition
XPath-Abschnitt 4.2, Zeichenkettenfunktionen.
Beispiel
Das folgende Beispiel demonstriert die Ergebnisse, wenn die Funktion string-length() auf eine Vielzahl verschiedener Argumenttypen angewendet wird. Für das Beispiel wird das folgende XML-Dokument verwendet:
    <?xml version="1.0"?>
    <test>
      <p>This is a test XML document used by several
      of our sample stylesheets.</p>
      <question>
        <text>When completed, the Eiffel Tower was the
        tallest building in the world.</text>
        <true>You're correct!  The Eiffel Tower was the
        world's tallest building until 1930.</true>
        <false>No, the Eiffel Tower was the world's
        tallest building for over 30 years.</false>
      </question>
      <question>
        <text>New York's Empire State Building knocked
        the Eiffel Tower from its pedestal.</text>
        <true>No, that's not correct.</true>
        <false>Correct!  New York's Chrysler Building,
        completed in 1930, became the world's tallest.</false>
      </question>
    </test>
Das Dokument wird mit dem folgenden Stylesheet verarbeitet:
    <?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 string-length() function:</xsl:text>

        <xsl:value-of select="$newline"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>   string-length(/test)=</xsl:text>
        <xsl:value-of select="string-length(/test)"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>   string-length(/true)=</xsl:text>
        <xsl:value-of select="string-length(/true)"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>   string-length(//true)=</xsl:text>
        <xsl:value-of select="string-length(//true)"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>   string-length(//test|//true|//text)=</xsl:text>
        <xsl:value-of select="string-length(//test|//true|//text)"/>
        <xsl:value-of select="$newline"/>
        <xsl:value-of select="$newline"/>
        <xsl:for-each select="/test/question">
          <xsl:text>   Question #</xsl:text>
          <xsl:value-of select="position()"/>
          <xsl:text> contains </xsl:text>
          <xsl:value-of select="string-length()"/>
          <xsl:text> characters.</xsl:text>
          <xsl:value-of select="$newline"/>
        </xsl:for-each>
      </xsl:template>

    </xsl:stylesheet>
Hier die Ergebnisse der Transformation:
    Tests of the string-length() function:

       string-length(/test)=522
       string-length(/true)=0
       string-length(//true)=78
       string-length(//test|//true|//text)=522

       Question #1 contains 239 characters.
       Question #2 contains 203 characters.
Beim Aufruf der Funktion string-length() ohne Argumente wurde der Kontextknoten in einen String konvertiert und dann die Länge dieses Strings zurückgegeben. Die zwei <question>-Elemente wurden innerhalb des <xsl:for-each>-Elements so behandelt.