1 /*
   2  * reserved comment block
   3  * DO NOT REMOVE OR ALTER!
   4  */
   5 /*
   6  * Licensed to the Apache Software Foundation (ASF) under one or more
   7  * contributor license agreements.  See the NOTICE file distributed with
   8  * this work for additional information regarding copyright ownership.
   9  * The ASF licenses this file to You under the Apache License, Version 2.0
  10  * (the "License"); you may not use this file except in compliance with
  11  * the License.  You may obtain a copy of the License at
  12  *
  13  *      http://www.apache.org/licenses/LICENSE-2.0
  14  *
  15  * Unless required by applicable law or agreed to in writing, software
  16  * distributed under the License is distributed on an "AS IS" BASIS,
  17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  18  * See the License for the specific language governing permissions and
  19  * limitations under the License.
  20  */
  21 
  22 package com.sun.org.apache.xalan.internal.extensions;
  23 
  24 import javax.xml.transform.ErrorListener;
  25 
  26 import com.sun.org.apache.xpath.internal.objects.XObject;
  27 import org.w3c.dom.Node;
  28 import org.w3c.dom.traversal.NodeIterator;
  29 
  30 /**
  31  * An object that implements this interface can supply
  32  * information about the current XPath expression context.
  33  */
  34 public interface ExpressionContext
  35 {
  36 
  37   /**
  38    * Get the current context node.
  39    * @return The current context node.
  40    */
  41   public Node getContextNode();
  42 
  43   /**
  44    * Get the current context node list.
  45    * @return An iterator for the current context list, as
  46    * defined in XSLT.
  47    */
  48   public NodeIterator getContextNodes();
  49 
  50   /**
  51    * Get the error listener.
  52    * @return The registered error listener.
  53    */
  54   public ErrorListener getErrorListener();
  55 
  56   /**
  57    * Get the value of a node as a number.
  58    * @param n Node to be converted to a number.  May be null.
  59    * @return value of n as a number.
  60    */
  61   public double toNumber(Node n);
  62 
  63   /**
  64    * Get the value of a node as a string.
  65    * @param n Node to be converted to a string.  May be null.
  66    * @return value of n as a string, or an empty string if n is null.
  67    */
  68   public String toString(Node n);
  69 
  70   /**
  71    * Get a variable based on it's qualified name.
  72    *
  73    * @param qname The qualified name of the variable.
  74    *
  75    * @return The evaluated value of the variable.
  76    *
  77    * @throws javax.xml.transform.TransformerException
  78    */
  79   public XObject getVariableOrParam(com.sun.org.apache.xml.internal.utils.QName qname)
  80             throws javax.xml.transform.TransformerException;
  81 
  82   /**
  83    * Get the XPathContext that owns this ExpressionContext.
  84    *
  85    * Note: exslt:function requires the XPathContext to access
  86    * the variable stack and TransformerImpl.
  87    *
  88    * @return The current XPathContext.
  89    * @throws javax.xml.transform.TransformerException
  90    */
  91   public com.sun.org.apache.xpath.internal.XPathContext getXPathContext()
  92             throws javax.xml.transform.TransformerException;
  93 
  94 }