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>