Package org.apache.xpath

Examples of org.apache.xpath.VariableStack


      transformer.getTraceManager().fireTraceEvent(sourceNode, mode, this);

    if (null != m_template)
    {
      XPathContext xctxt = transformer.getXPathContext();
      VariableStack vars = xctxt.getVarStack();

      int savedSearchStart = vars.getSearchStart();

      if (null != m_paramElems)
        transformer.pushParams(xctxt, this, sourceNode, mode);
      else
        vars.pushContextMarker();
     
      vars.setSearchStart(-1);

      SourceLocator savedLocator = xctxt.getSAXLocator();

      try
      {
        xctxt.setSAXLocator(m_template);

        // template.executeChildTemplates(transformer, sourceNode, mode, true);
        transformer.pushElemTemplateElement(m_template);
        m_template.execute(transformer, sourceNode, mode);
      }
      finally
      {
        transformer.popElemTemplateElement();
        xctxt.setSAXLocator(savedLocator);
        vars.popCurrentContext();
        vars.setSearchStart(savedSearchStart);
      }
    }
    else
    {
      transformer.getMsgMgr().error(this, XSLTErrorResources.ER_TEMPLATE_NOT_FOUND,
View Full Code Here


    }
   
    /** Returns a locally appropriate context given a node. */
    private VariableStack getLocalContext() {
        // set up instance-specific contexts
        VariableStack vc = new JstlVariableContext();
        return vc;
    }   
View Full Code Here

   * in extensions.
   */
  public void setParameter(String name, String namespace, Object value)
  {

    VariableStack varstack = getXPathContext().getVarStack();
    QName qname = new QName(namespace, name);
    XObject xobject = XObject.create(value);

    varstack.pushOrReplaceVariable(qname, xobject);
  }
View Full Code Here

   */
  public void clearParameters()
  {
    synchronized(m_reentryGuard)
    {
      VariableStack varstack = new VariableStack();
      getXPathContext().setVarStack(varstack);
      m_userParams = null;
    }
  }
View Full Code Here

            throws TransformerException
  {

    // The trick here is, variables need to be executed outside the context
    // of the current stack frame.
    VariableStack vars = xctxt.getVarStack();
    int n = xslCallTemplateElement.getParamElemCount();
   
    int paramDeclareContext = vars.getSearchStartOrTop();
    vars.pushContextMarker();
    int paramReferenceContext = -1;

    for (int i = 0; i < n; i++)
    {
      vars.setSearchStart(paramDeclareContext);
      ElemWithParam xslParamElement = xslCallTemplateElement.getParamElem(i);

      // Get the argument value as either an expression or
      // a result tree fragment.
      XObject var;
      XPath param = xslParamElement.getSelect();

      if (null != param)
      {
        var = param.execute(getXPathContext(), sourceNode, xslParamElement);
      }
      else if (null == xslParamElement.getFirstChild())
      {
        var = XString.EMPTYSTRING;
      }
      else
      {

        // Use result tree fragment
        DocumentFragment df = transformToRTF(xslParamElement, sourceNode,
                                             mode);

        var = new XRTreeFrag(df);
      }

      vars.setSearchStart(paramReferenceContext);
      vars.pushVariableArg(new Arg(xslParamElement.getName(), var, true));
//      m_newVars.addElement(new Arg(xslParamElement.getName(), var, true));
    }

//    int nNew = m_newVars.size();
//
View Full Code Here

    // this will make all the variables for all stylesheets
    // in scope, when really only the current stylesheet's
    // global variables should be in scope.  Have to think on
    // this more...
    XPathContext xctxt = getXPathContext();
    VariableStack vs = xctxt.getVarStack();
    StylesheetRoot sr = getStylesheet();
    Vector vars = sr.getVariablesAndParamsComposed();

    int startGlobals = vs.size();
    int i = vars.size();
    while (--i >= 0)
    {
      ElemVariable v = (ElemVariable) vars.elementAt(i);

      if (vs.variableIsDeclared(v.getName()))
        continue;

      // XObject xobj = v.getValue(this, contextNode);
      XObject xobj = new XUnresolvedVariable(v, contextNode,
                             this, vs.getSearchStartOrTop(), 0, true);

      vs.pushVariable(v.getName(), xobj);
      vs.markGlobalStackFrame();
    }
    vs.markGlobalStackFrame();
   
    int endGlobals = vs.size();
    for(i = startGlobals; i < endGlobals; i++)
    {
      Arg arg = (Arg)vs.elementAt(i);
      XUnresolvedVariable uv = (XUnresolvedVariable)arg.getVal();
      uv.setVarStackPos(endGlobals);
    }

    vs.pushContextMarker();
  }
View Full Code Here

    if (check)
      getStackGuard().push(elem, sourceNode);

    // We need to push an element frame in the variables stack,
    // so all the variables can be popped at once when we're done.
    VariableStack varstack = getXPathContext().getVarStack();

    varstack.pushElemFrame();

    SourceLocator savedLocator = xctxt.getSAXLocator();

    try
    {
      pushElemTemplateElement(null);

      // Loop through the children of the template, calling execute on
      // each of them.
      for (ElemTemplateElement t = firstChild; t != null;
              t = t.getNextSiblingElem())
      {
        if(!shouldAddAttrs && t.getXSLToken() == Constants.ELEMNAME_ATTRIBUTE)
          continue;
        xctxt.setSAXLocator(t);
        m_currentTemplateElements.setTail(t);
        t.execute(this, sourceNode, mode);
      }
    }
    catch(TransformerException te)
    {
      throw te;
    }
    finally
    {
      popElemTemplateElement();
      xctxt.setSAXLocator(savedLocator);

      // Pop all the variables in this element frame.
      varstack.popElemFrame();
    }

    // Check for infinite loops if we have to
    if (check)
      getStackGuard().pop();
View Full Code Here

    {
      this.m_transformer.getMsgMgr().error     
        (xctxt.getSAXLocator(), XSLTErrorResources.ER_REFERENCING_ITSELF,
          new Object[]{((ElemVariable)this.object()).getName().getLocalName()});
    }
    VariableStack vars = xctxt.getVarStack();
   
    // These three statements need to be combined into one operation.
    int savedStart = vars.getSearchStart();
    vars.setSearchStart(m_varStackPos);
    vars.pushContextPosition(m_varStackContext);

    m_doneEval = false;
    ElemVariable velem = (ElemVariable)m_obj;
    XObject var = velem.getValue(m_transformer, m_context);
   
    // These two statements need to be combined into one operation.
    vars.setSearchStart(savedStart);
    vars.popContextPosition();
    m_doneEval = true;

    return var;
  }
View Full Code Here

  int pushParams(
          TransformerImpl transformer, XPathContext xctxt, Node sourceNode, QName mode)
            throws TransformerException
  {

    VariableStack vars = xctxt.getVarStack();
    int savedSearchStart = vars.getSearchStart();     
   
    if (null != m_paramElems)
    { 
      transformer.pushParams(xctxt, this, sourceNode, mode);
    
    else
      vars.pushContextMarker();
   
    vars.setSearchStart(-1);
    
    return savedSearchStart;
  }
View Full Code Here

  /**
   * Re-mark the params as params.
   */
  void reMarkParams(XPathContext xctxt)
  {
    VariableStack vars = xctxt.getVarStack();
    vars.remarkParams();
  }
View Full Code Here

TOP

Related Classes of org.apache.xpath.VariableStack

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.