6.5 拡張関数の使用

XSLTは、ある種の変換を実行するには優れたツールですが、ゼロでない文字列操作や反復処理などの変換では、十分な機能が備わっているとはいえません。ただし、Novell XSLTプロセッサには、スタイルシートからJava (広い意味ではJNIでアクセス可能な他の言語)で実装された関数を呼び出すことができる拡張関数が実装されています。

具体的な例については、クエリプロセッサを使用するクエリプロセッサ、およびJavaを使用した文字列操作を示した次の例を参照してください。長い行は折り返されているため、<で始まっていません。このスタイルシートを表示するには、Extension_Functions.xslを参照してください。

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