Fonction lang() |
Détermine si une chaîne de langage donnée est identique, ou correspond à un sous-langage, au langage du nœud de contexte, comme défini par un attribut xml:lang.
Entrées
Une chaîne représentant un code langage. Si le langage du nœud de contexte est de type xml:lang="en-us", invoquer la fonction lang() pour les différentes valeurs en, EN et en-us renvoie la valeur booléenne true, alors qu'invoquer la fonction lang() pour la valeur en-gb renvoie la valeur booléenne false.
Sortie
Si la chaîne de l'argument est identique, ou correspond à un sous-langage, au langage du nœud de contexte, la fonction lang() renvoie la valeur booléenne true. Si le nœud de contexte ne possède pas d'attribut xml:lang, la valeur de l'attribut xml:lang de son ancêtre le plus proche est alors utilisée à la place. Si ce type d'attribut n'existe pas, la fonction lang() renvoie alors la valeur booléenne false. En comparant le code langage du nœud de contexte avec la chaîne de l'argument, la fonction lang() ignore la casse.
Définie dans
XPath section 4.3, Fonctions booléennes.
Exemple
Le document XML suivant utilise des codes de langage :
    <?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>
La feuille de style suivante utilise la fonction lang() :
    <?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>
Les résultats sont les suivants :
    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