Utilisation des fonctions d'extension

XSLT est un excellent outil pour réaliser certains types de transformations ; il est par contre assez limité pour d'autres types de transformations, telles que la manipulation de chaînes non essentielles et les processus itératifs. Heureusement, le processeur Novell XSLT met en oeuvre des fonctions d'extension qui permettent à la feuille de style d'appeler une fonction mise en oeuvre en Java et, par extension, tout autre langage accessible via JNI.

Pour des exemples spécifiques, reportez-vous à l'exemple précédent qui utilise le processeur de requête et à l'exemple suivant qui montre l'utilisation de Java dans la manipulation de chaînes (les longues lignes supplémentaires sont enveloppées et ne commencent pas par <).

<!-- get-dn-prefix places the part of the passed dn that --> 
<!-- precedes the last occurrence of '\' in the passed dn -->
<!-- in a result tree fragment meaning that it can be -->
<!-- used to assign a variable value -->

<xsl:template name="get-dn-prefix" xmlns:jstring="http://
www.novell.com/nxsl/java/java.lang.String">

<xsl:param name="src-dn"/>

<!-- use java string stuff to make this much easier -->
<xsl:variable name="dn" select="jstring:new($src-dn)"/>
<xsl:variable name="index" select="jstring:lastIndexOf
($dn,'\')"/>
<xsl:if test="$index != -1">
<xsl:value-of select="jstring:substring($dn,0,$index)
"/>
</xsl:if>
</xsl:template>