Fonction function-available() |
Détermine si le processeur XSLT peut accéder à une fonction donnée. Cette fonction permet de concevoir des feuilles de style réagissant avec élégance si une fonction particulière n'est pas disponible pour traiter un document XML.
Entrées
Le nom de la fonction nommée. Ce nom est généralement qualifié par un espace de noms ; si l'espace de noms du nom de la fonction n'est pas nul, la fonction est une fonction de l'extension. Sinon, la fonction correspond à l'une des fonctions définies dans les spécifications XSLT ou XPath.
Sortie
La valeur booléenne true si la fonction est disponible ; la valeur false dans le cas contraire.
Définie dans
XSLT section 15, Traitement de secours.
Exemple
Le document XML suivant a permis de tester la fonction function-available() :
    <?xml version="1.0"?>
    <list>
      <title>A few of my favorite albums</title>
      <listitem>A Love Supreme</listitem>
      <listitem>Beat Crazy</listitem>
      <listitem>Here Come the Warm Jets</listitem>
      <listitem>Kind of Blue</listitem>
      <listitem>London Calling</listitem>
      <listitem>Remain in Light</listitem>

      <listitem>The Joshua Tree</listitem>
      <listitem>The Indestructible Beat of Soweto</listitem>
    </list>
La feuille de style est la suivante :
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:jpeg="class:JPEGWriter"
      extension-element-prefixes="jpeg">

      <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="function-available('jpeg:createJPEG')">
              <xsl:value-of
                select="jpeg:createJPEG(., 'bg.jpg',
                concat('album', position(), '.jpg'),
                'Swiss 721 Bold Condensed', 'BOLD', 22, 52, 35)"/>
              <xsl:text>See the file </xsl:text>
              <xsl:value-of select="concat('album', position(), '.jpg')"/>
              <xsl:text> to see the title of album #</xsl:text>
              <xsl:value-of select="position()"/>
              <xsl:value-of select="$newline"/>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="position()"/>
              <xsl:text>. </xsl:text>
              <xsl:value-of select="."/>
              <xsl:value-of select="$newline"/>
            </xsl:otherwise>
          </xsl:choose>
        </xsl:for-each>
      </xsl:template>

    </xsl:stylesheet>
Dans cette feuille de style, si la fonction createJPEG() est disponible, elle est invoquée pour créer des fichiers JPEG pour les titres de tous les albums favoris. Si la fonction n'est pas disponible, ces titres sont simplement écrits dans le flux de sortie. Voici les résultats obtenus lorsque la fonction createJPEG() est disponible :
    See the file album1.jpg to see the title of album #1
    See the file album2.jpg to see the title of album #2
    See the file album3.jpg to see the title of album #3
    See the file album4.jpg to see the title of album #4
    See the file album5.jpg to see the title of album #5
    See the file album6.jpg to see the title of album #6
    See the file album7.jpg to see the title of album #7
    See the file album8.jpg to see the title of album #8
Tous les titres d'album (le texte des éléments <listitem>) sont convertis en graphiques JPEG. Dans cet exemple, le fichier album8.jpg ressemble à la Figure C-3. Graphique généré pour le huitième élément <listitem> Si le fichier JPEGWriter.class est supprimé (si le fichier .class est manquant, la fonction n'est pas disponible), les résultats alors obtenus sont les suivants :
    1. A Love Supreme
    2. Beat Crazy
    3. Here Come the Warm Jets
    4. Kind of Blue
    5. London Calling
    6. Remain in Light
    7. The Joshua Tree
    8. The Indestructible Beat of Soweto