AttributeIterator.java revision 9f8118474e9513f7a5b7d2a05e4a0fb15d1a6569
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the  "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 *     http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18/*
19 * $Id: AttributeIterator.java 468655 2006-10-28 07:12:06Z minchau $
20 */
21package org.apache.xpath.axes;
22
23import org.apache.xml.dtm.DTM;
24import org.apache.xpath.compiler.Compiler;
25
26/**
27 * This class implements an optimized iterator for
28 * attribute axes patterns.
29 * @see org.apache.xpath.axes#ChildTestIterator
30 * @xsl.usage advanced
31 */
32public class AttributeIterator extends ChildTestIterator
33{
34    static final long serialVersionUID = -8417986700712229686L;
35
36  /**
37   * Create a AttributeIterator object.
38   *
39   * @param compiler A reference to the Compiler that contains the op map.
40   * @param opPos The position within the op map, which contains the
41   * location path expression for this itterator.
42   *
43   * @throws javax.xml.transform.TransformerException
44   */
45  AttributeIterator(Compiler compiler, int opPos, int analysis)
46          throws javax.xml.transform.TransformerException
47  {
48    super(compiler, opPos, analysis);
49  }
50
51  /**
52   * Get the next node via getFirstAttribute && getNextAttribute.
53   */
54  protected int getNextNode()
55  {
56    m_lastFetched = (DTM.NULL == m_lastFetched)
57                     ? m_cdtm.getFirstAttribute(m_context)
58                     : m_cdtm.getNextAttribute(m_lastFetched);
59    return m_lastFetched;
60  }
61
62  /**
63   * Returns the axis being iterated, if it is known.
64   *
65   * @return Axis.CHILD, etc., or -1 if the axis is not known or is of multiple
66   * types.
67   */
68  public int getAxis()
69  {
70    return org.apache.xml.dtm.Axis.ATTRIBUTE;
71  }
72
73
74
75}
76