org.apache.xalan.templates
Class FuncDocument

java.lang.Object
  extended byorg.apache.xpath.Expression
      extended byorg.apache.xpath.functions.Function
          extended byorg.apache.xpath.functions.FunctionOneArg
              extended byorg.apache.xpath.functions.Function2Args
                  extended byorg.apache.xalan.templates.FuncDocument
All Implemented Interfaces:
ExpressionNode, ExpressionOwner, Serializable, javax.xml.transform.SourceLocator, XPathVisitable

public class FuncDocument
extends Function2Args

Execute the Doc() function. When the document function has exactly one argument and the argument is a node-set, then the result is the union, for each node in the argument node-set, of the result of calling the document function with the first argument being the string-value of the node, and the second argument being a node-set with the node as its only member. When the document function has two arguments and the first argument is a node-set, then the result is the union, for each node in the argument node-set, of the result of calling the document function with the first argument being the string-value of the node, and with the second argument being the second argument passed to the document function.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class org.apache.xpath.functions.Function2Args
 
Field Summary
 
Fields inherited from class org.apache.xpath.functions.Function2Args
 
Fields inherited from class org.apache.xpath.functions.FunctionOneArg
 
Fields inherited from class org.apache.xpath.Expression
 
Constructor Summary
FuncDocument()
           
 
Method Summary
 void checkNumberArgs(int argNum)
          Overide the superclass method to allow one or two arguments.
 void error(XPathContext xctxt, String msg, Object[] args)
          Tell the user of an error, and probably throw an exception.
 XObject execute(XPathContext xctxt)
          Execute the function.
(package private)  int getDoc(XPathContext xctxt, int context, String uri, String base)
          Get the document from the given URI and base
 boolean isNodesetExpr()
          Tell if the expression is a nodeset expression.
protected  void reportWrongNumberArgs()
          Constructs and throws a WrongNumberArgException with the appropriate message for this function object.
 void warn(XPathContext xctxt, String msg, Object[] args)
          Warn the user of a problem.
 
Methods inherited from class org.apache.xpath.functions.Function2Args
callArgVisitors, canTraverseOutsideSubtree, deepEquals, fixupVariables, getArg1, setArg
 
Methods inherited from class org.apache.xpath.functions.FunctionOneArg
getArg0, getExpression, setExpression
 
Methods inherited from class org.apache.xpath.functions.Function
callVisitors, postCompileStep
 
Methods inherited from class org.apache.xpath.Expression
asIterator, asIteratorRaw, asNode, assertion, bool, execute, execute, execute, executeCharsToContentHandler, exprAddChild, exprGetChild, exprGetNumChildren, exprGetParent, exprSetParent, getColumnNumber, getExpressionOwner, getLineNumber, getPublicId, getSystemId, isSameClass, isStableNumber, num, xstr
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FuncDocument

public FuncDocument()
Method Detail

execute

public XObject execute(XPathContext xctxt)
                throws javax.xml.transform.TransformerException
Execute the function. The function must return a valid object.

Overrides:
execute in class Function
Parameters:
xctxt - The current execution context.
Returns:
A valid XObject.
Throws:
javax.xml.transform.TransformerException

getDoc

int getDoc(XPathContext xctxt,
           int context,
           String uri,
           String base)
     throws javax.xml.transform.TransformerException
Get the document from the given URI and base

Parameters:
xctxt - The XPath runtime state.
context - The current context node
uri - Relative(?) URI of the document
base - Base to resolve relative URI from.
Returns:
The document Node pointing to the document at the given URI or null
Throws:
javax.xml.transform.TransformerException

error

public void error(XPathContext xctxt,
                  String msg,
                  Object[] args)
           throws javax.xml.transform.TransformerException
Tell the user of an error, and probably throw an exception.

Overrides:
error in class Expression
Parameters:
xctxt - The XPath runtime state.
msg - The error message key
args - Arguments to be used in the error message
Throws:
XSLProcessorException - thrown if the active ProblemListener and XPathContext decide the error condition is severe enough to halt processing.
javax.xml.transform.TransformerException

warn

public void warn(XPathContext xctxt,
                 String msg,
                 Object[] args)
          throws javax.xml.transform.TransformerException
Warn the user of a problem.

Overrides:
warn in class Expression
Parameters:
xctxt - The XPath runtime state.
msg - Warning message key
args - Arguments to be used in the warning message
Throws:
XSLProcessorException - thrown if the active ProblemListener and XPathContext decide the error condition is severe enough to halt processing.
javax.xml.transform.TransformerException

checkNumberArgs

public void checkNumberArgs(int argNum)
                     throws WrongNumberArgsException
Overide the superclass method to allow one or two arguments.

Overrides:
checkNumberArgs in class Function2Args
Parameters:
argNum - Number of arguments passed in to this function
Throws:
WrongNumberArgsException

reportWrongNumberArgs

protected void reportWrongNumberArgs()
                              throws WrongNumberArgsException
Constructs and throws a WrongNumberArgException with the appropriate message for this function object.

Overrides:
reportWrongNumberArgs in class Function2Args
Throws:
WrongNumberArgsException

isNodesetExpr

public boolean isNodesetExpr()
Tell if the expression is a nodeset expression. In other words, tell if you can execute asNode without an exception.

Overrides:
isNodesetExpr in class Expression
Returns:
true if the expression can be represented as a nodeset.