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>