拡張関数の使用

XSLTは、いくつかの変換には優れたツールですが、自明でない文字列の操作や反復処理などの変換には適していません。しかし、Novell XSLTプロセッサには拡張関数が実装されているので、スタイルシートで、Javaで実装されている関数を呼び出したり、拡張によって、JNIを通じてアクセスできる他の言語に実装されている機能を呼び出したりできます。

具体的な例については、クエリプロセッサを使った前の例、およびJavaを使った文字列操作を示す次の例を参照してください(極端に長い行は折り返されているので、<で始まっていません)。

<!-- 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>