⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 childtestiterator.java

📁 java1.6众多例子参考
💻 JAVA
字号:
/* * Copyright 1999-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *//* * $Id: ChildTestIterator.java,v 1.2.4.2 2005/09/14 19:45:20 jeffsuttor Exp $ */package com.sun.org.apache.xpath.internal.axes;import com.sun.org.apache.xml.internal.dtm.Axis;import com.sun.org.apache.xml.internal.dtm.DTM;import com.sun.org.apache.xml.internal.dtm.DTMAxisTraverser;import com.sun.org.apache.xml.internal.dtm.DTMIterator;import com.sun.org.apache.xpath.internal.compiler.Compiler;/** * This class implements an optimized iterator for * children patterns that have a node test, and possibly a predicate. * @see com.sun.org.apache.xpath.internal.axes.BasicTestIterator * @xsl.usage advanced */public class ChildTestIterator extends BasicTestIterator{    static final long serialVersionUID = -7936835957960705722L;  /** The traverser to use to navigate over the descendants. */  transient protected DTMAxisTraverser m_traverser;    /** The extended type ID, not set until setRoot. *///  protected int m_extendedTypeID;  /**   * Create a ChildTestIterator object.   *   * @param compiler A reference to the Compiler that contains the op map.   * @param opPos The position within the op map, which contains the   * location path expression for this itterator.   *   * @throws javax.xml.transform.TransformerException   */  ChildTestIterator(Compiler compiler, int opPos, int analysis)          throws javax.xml.transform.TransformerException  {    super(compiler, opPos, analysis);  }    /**   * Create a ChildTestIterator object.   *   * @param traverser Traverser that tells how the KeyIterator is to be handled.   *   * @throws javax.xml.transform.TransformerException   */  public ChildTestIterator(DTMAxisTraverser traverser)  {    super(null);    m_traverser = traverser;  }  /**   * Get the next node via getNextXXX.  Bottlenecked for derived class override.   * @return The next node on the axis, or DTM.NULL.   */  protected int getNextNode()  {                         if(true /* 0 == m_extendedTypeID */)    {      m_lastFetched = (DTM.NULL == m_lastFetched)                   ? m_traverser.first(m_context)                   : m_traverser.next(m_context, m_lastFetched);    }//    else//    {//      m_lastFetched = (DTM.NULL == m_lastFetched)//                   ? m_traverser.first(m_context, m_extendedTypeID)//                   : m_traverser.next(m_context, m_lastFetched, //                                      m_extendedTypeID);//    }    return m_lastFetched;  }    /**   *  Get a cloned Iterator that is reset to the beginning   *  of the query.   *    *  @return A cloned NodeIterator set of the start of the query.   *    *  @throws CloneNotSupportedException   */  public DTMIterator cloneWithReset() throws CloneNotSupportedException  {    ChildTestIterator clone = (ChildTestIterator) super.cloneWithReset();    clone.m_traverser = m_traverser;    return clone;  }    /**   * Initialize the context values for this expression   * after it is cloned.   *   * @param context The XPath runtime context for this   * transformation.   */  public void setRoot(int context, Object environment)  {    super.setRoot(context, environment);    m_traverser = m_cdtm.getAxisTraverser(Axis.CHILD);    //    String localName = getLocalName();//    String namespace = getNamespace();//    int what = m_whatToShow;//    // System.out.println("what: ");//    // NodeTest.debugWhatToShow(what);//    if(DTMFilter.SHOW_ALL == what ||//       ((DTMFilter.SHOW_ELEMENT & what) == 0)//       || localName == NodeTest.WILD//       || namespace == NodeTest.WILD)//    {//      m_extendedTypeID = 0;//    }//    else//    {//      int type = getNodeTypeTest(what);//      m_extendedTypeID = m_cdtm.getExpandedTypeID(namespace, localName, type);//    }      }    /**   * Returns the axis being iterated, if it is known.   *    * @return Axis.CHILD, etc., or -1 if the axis is not known or is of multiple    * types.   */  public int getAxis()  {    return com.sun.org.apache.xml.internal.dtm.Axis.CHILD;  }  /**   *  Detaches the iterator from the set which it iterated over, releasing   * any computational resources and placing the iterator in the INVALID   * state. After<code>detach</code> has been invoked, calls to   * <code>nextNode</code> or<code>previousNode</code> will raise the   * exception INVALID_STATE_ERR.   */  public void detach()  {       if(m_allowDetach)    {      m_traverser = null;            // Always call the superclass detach last!      super.detach();    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -