2013-09-18 4 views
2

Я пытаюсь вызвать JavaScript внутри XSLT, но он продолжает терпеть неудачу. Я использую пространство имен Xalan. Я тоже звоню в Java, и это не проблема, но по какой-то причине JavaScript не работает.Как включить вызов JavaScript в XSLT?

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="http://xml.apache.org/xalan/java" xmlns:xalan="http://xml.apache.org/xalan" xmlns:counter="MyCounter" extension-element-prefixes="counter"> 
<xsl:template match="/"> 
    <xalan:component prefix="counter" functions="response"> 
     <xalan:script lang="javascript"> 

      function response(name) { 
      // Return a string. 
      return "" + (name); 
      } 

     </xalan:script> 
    </xalan:component> 

    <xsl:value-of select="counter:response('hello')"/> 
    <xsl:variable name="rightNow" select="java:java.util.Date.new()"/><!-- Get date object --> 
    <xsl:variable name="formatter" select="java:java.text.SimpleDateFormat.new('MM')"/> <!-- double digit format: append 0 to less than ten --> 
    <xsl:variable name="formattedMonth" select="java:format($formatter, $rightNow)"/> <!-- format it --> 
    <p><xsl:value-of select="$formattedMonth"/></p> 
</xsl:template> 
</xsl:stylesheet> 

Я получаю эту ошибку в трансформаторе XML:

<Location of error unknown>java.lang.NoSuchMethodException: For extension function, could not find method java.lang.String.response<ExpressionContext, ]>. 
+0

Я думаю, что скриптовый тег достаточно, он, вероятно, не требует префикса 'xalan''