lang()-Funktion  
Diese Funktion bestimmt, ob ein bestimmter Sprach-String in der gleichen Sprache oder Sprachvariante wie der Kontextknoten gehalten ist. Sie richtet sich dabei nach dem Wert des Attributs xml:lang.
 
Eingaben

Ein String, der einen Sprachencode repräsentiert. Hat der Kontextknoten die Sprache xml:lang="en-us", so wird durch Aufruf der Funktion lang() mit einem der Argumentwerte en, EN oder en-us der Boolesche Wert true zurückgegeben. Wird lang() hingegen mit dem Wert en-gb aufgerufen, wird der Boolesche Wert false zurückgegeben.

 
Ausgabe

Hat der Argument-String dieselbe Sprache oder Sprachvariante wie der Kontextknoten, liefert lang() den Booleschen Wert true. Besitzt der Kontextknoten kein xml:lang-Attribut, wird der xml:lang-Wert des nächsten Vorfahren verwendet. Wenn es jedoch kein solches Attribut gibt, liefert die Funktion lang() den Booleschen Wert false. Beim Vergleichen des Sprachencodes des Kontextknotens mit dem Argument-String wird die Groß-/Kleinschreibung von der Funktion lang() ignoriert.

 
Definition

XPath-Abschnitt 4.3, Boolesche Funktionen

 
Beispiel

Hier ein XML-Dokument, das Sprachencodes verwendet:

<?xml version="1.0"?>
<list xml:lang="en">
  <title>Albums I've bought recently:</title>
  <listitem>The Sacred Art of Dub</listitem>
  <listitem>Only the Poor Man Feel It</listitem>
  <listitem>Excitable Boy</listitem>
  <listitem xml:lang="sw">Aki Special</listitem>
  <listitem xml:lang="en-gb">Combat Rock</listitem>
  <listitem xml:lang="zu">Talking Timbuktu</listitem>
  <listitem xml:lang="jz">The Birth of the Cool</listitem>
</list>

Hier das Stylesheet, das die Funktion lang() verwendet:

<?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:for-each select="list/listitem">
      <xsl:choose>
        <xsl:when test="lang('EN')">
          <xsl:text>Here's an English-language album: </xsl:text>
        </xsl:when>
        <xsl:otherwise>
          <xsl:text>-------> Here's some World music: </xsl:text>
        </xsl:otherwise>
      </xsl:choose>
      <xsl:value-of select="."/>
      <xsl:value-of select="$newline"/>
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>

Hier schließlich die Ergebnisse:


Here's an English-language album: The Sacred Art of Dub
Here's an English-language album: Only the Poor Man Feel It
Here's an English-language album: Excitable Boy
-------> Here's some World music: Aki Special
Here's an English-language album: Combat Rock
-------> Here's some World music: Talking Timbuktu
-------> Here's some World music: The Birth of the Cool