5.5 拡張機能の使用

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>