org.apache.xalan.extensions
Class ExtensionHandlerExsltFunction

java.lang.Object
  extended by org.apache.xalan.extensions.ExtensionHandler
      extended by org.apache.xalan.extensions.ExtensionHandlerExsltFunction

public class ExtensionHandlerExsltFunction
extends ExtensionHandler

Execute EXSLT functions, determine the availability of EXSLT functions, and the availability of an EXSLT result element.


Field Summary
private  java.lang.String m_namespace
           
private  StylesheetRoot m_stylesheet
           
private static QName RESULTQNAME
           
 
Fields inherited from class org.apache.xalan.extensions.ExtensionHandler
m_namespaceUri, m_scriptLang
 
Constructor Summary
ExtensionHandlerExsltFunction(java.lang.String ns, StylesheetRoot stylesheet)
          Constructor called from ElemExsltFunction runtimeInit().
 
Method Summary
private  boolean ancestorIsFunction(ElemTemplateElement child)
          Determine whether the func:result element is within a func:function element.
 java.lang.Object callFunction(FuncExtFunction extFunction, java.util.Vector args, ExpressionContext exprContext)
          Execute the EXSLT function and return the result value.
 java.lang.Object callFunction(java.lang.String funcName, java.util.Vector args, java.lang.Object methodKey, ExpressionContext exprContext)
          Execute the EXSLT function and return the result value.
 ElemExsltFunction getFunction(java.lang.String funcName)
          Get the ElemExsltFunction element associated with the function.
 boolean isElementAvailable(java.lang.String elemName)
          If an element-available() call applies to an EXSLT result element within an EXSLT function element, return true.
 boolean isFunctionAvailable(java.lang.String funcName)
          Does the EXSLT function exist?
 void processElement(java.lang.String localPart, ElemTemplateElement element, TransformerImpl transformer, Stylesheet stylesheetTree, java.lang.Object methodKey)
          Required by ExtensionHandler (an abstract method).
 
Methods inherited from class org.apache.xalan.extensions.ExtensionHandler
getClassForName
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_namespace

private java.lang.String m_namespace

m_stylesheet

private StylesheetRoot m_stylesheet

RESULTQNAME

private static final QName RESULTQNAME
Constructor Detail

ExtensionHandlerExsltFunction

public ExtensionHandlerExsltFunction(java.lang.String ns,
                                     StylesheetRoot stylesheet)
Constructor called from ElemExsltFunction runtimeInit().

Method Detail

processElement

public void processElement(java.lang.String localPart,
                           ElemTemplateElement element,
                           TransformerImpl transformer,
                           Stylesheet stylesheetTree,
                           java.lang.Object methodKey)
                    throws javax.xml.transform.TransformerException,
                           java.io.IOException
Required by ExtensionHandler (an abstract method). No-op.

Specified by:
processElement in class ExtensionHandler
Parameters:
localPart - Element name's local part.
element - The extension element being processed.
transformer - Handle to TransformerImpl.
stylesheetTree - The compiled stylesheet tree.
methodKey - A key that uniquely identifies this class and method call.
Throws:
javax.xml.transform.TransformerException - if parsing trouble
java.io.IOException - if loading trouble

getFunction

public ElemExsltFunction getFunction(java.lang.String funcName)
Get the ElemExsltFunction element associated with the function.

Parameters:
funcName - Local name of the function.
Returns:
the ElemExsltFunction element associated with the function, null if none exists.

isFunctionAvailable

public boolean isFunctionAvailable(java.lang.String funcName)
Does the EXSLT function exist?

Specified by:
isFunctionAvailable in class ExtensionHandler
Parameters:
funcName - Local name of the function.
Returns:
true if the function exists.

isElementAvailable

public boolean isElementAvailable(java.lang.String elemName)
If an element-available() call applies to an EXSLT result element within an EXSLT function element, return true. Note: The EXSLT function element is a template-level element, and element-available() returns false for it.

Specified by:
isElementAvailable in class ExtensionHandler
Parameters:
elemName - name of the element.
Returns:
true if the function is available.

ancestorIsFunction

private boolean ancestorIsFunction(ElemTemplateElement child)
Determine whether the func:result element is within a func:function element. If not, it is illegal.


callFunction

public java.lang.Object callFunction(java.lang.String funcName,
                                     java.util.Vector args,
                                     java.lang.Object methodKey,
                                     ExpressionContext exprContext)
                              throws javax.xml.transform.TransformerException
Execute the EXSLT function and return the result value.

Specified by:
callFunction in class ExtensionHandler
Parameters:
funcName - Name of the EXSLT function.
args - The arguments of the function call.
methodKey - Not used.
exprContext - Used to get the XPathContext.
Returns:
the return value of the function evaluation.
Throws:
javax.xml.transform.TransformerException

callFunction

public java.lang.Object callFunction(FuncExtFunction extFunction,
                                     java.util.Vector args,
                                     ExpressionContext exprContext)
                              throws javax.xml.transform.TransformerException
Execute the EXSLT function and return the result value.

Specified by:
callFunction in class ExtensionHandler
Parameters:
extFunction - The XPath extension function
args - The arguments of the function call.
exprContext - The context in which this expression is being executed.
Returns:
the return value of the function evaluation.
Throws:
javax.xml.transform.TransformerException