1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// SAX Attribute List Interface.
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// http://www.saxproject.org
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// No warranty; no copyright -- use this as you will.
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// $Id: AttributeList.java,v 1.7 2004/04/26 17:34:34 dmegginson Exp $
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.xml.sax;
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Interface for an element's attribute specifications.
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <blockquote>
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <em>This module, both source code and documentation, is in the
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * for further information.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </blockquote>
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>This is the original SAX1 interface for reporting an element's
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * attributes.  Unlike the new {@link org.xml.sax.Attributes Attributes}
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * interface, it does not support Namespace-related information.</p>
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>When an attribute list is supplied as part of a
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link org.xml.sax.DocumentHandler#startElement startElement}
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * event, the list will return valid results only during the
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * scope of the event; once the event handler returns control
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * to the parser, the attribute list is invalid.  To save a
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * persistent copy of the attribute list, use the SAX1
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link org.xml.sax.helpers.AttributeListImpl AttributeListImpl}
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * helper class.</p>
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>An attribute list includes only attributes that have been
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * specified or defaulted: #IMPLIED attributes will not be included.</p>
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>There are two ways for the SAX application to obtain information
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * from the AttributeList.  First, it can iterate through the entire
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * list:</p>
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <pre>
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * public void startElement (String name, AttributeList atts) {
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *   for (int i = 0; i < atts.getLength(); i++) {
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     String name = atts.getName(i);
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     String type = atts.getType(i);
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     String value = atts.getValue(i);
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     [...]
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *   }
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * }
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </pre>
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>(Note that the result of getLength() will be zero if there
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * are no attributes.)
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>As an alternative, the application can request the value or
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * type of specific attributes:</p>
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <pre>
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * public void startElement (String name, AttributeList atts) {
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *   String identifier = atts.getValue("id");
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *   String label = atts.getValue("label");
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *   [...]
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * }
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </pre>
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @deprecated This interface has been replaced by the SAX2
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *             {@link org.xml.sax.Attributes Attributes}
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *             interface, which includes Namespace support.
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @since SAX 1.0
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @author David Megginson
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @version 2.0.1 (sax2r2)
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see org.xml.sax.DocumentHandler#startElement startElement
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see org.xml.sax.helpers.AttributeListImpl AttributeListImpl
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
72b365037fb5723ecd2810ac2dc4ec45fc570764b6Jesse Wilson@Deprecated
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic interface AttributeList {
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    ////////////////////////////////////////////////////////////////////
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // Iteration methods.
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    ////////////////////////////////////////////////////////////////////
79f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Return the number of attributes in this list.
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>The SAX parser may provide attributes in any
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * arbitrary order, regardless of the order in which they were
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * declared or specified.  The number of attributes may be
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * zero.</p>
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
89f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @return The number of attributes in the list.
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract int getLength ();
92f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
93f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Return the name of an attribute in this list (by position).
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>The names must be unique: the SAX parser shall not include the
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * same attribute twice.  Attributes without values (those declared
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * #IMPLIED without a value specified in the start tag) will be
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * omitted from the list.</p>
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>If the attribute name has a namespace prefix, the prefix
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * will still be attached.</p>
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param i The index of the attribute in the list (starting at 0).
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return The name of the indexed attribute, or null
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         if the index is out of range.
108f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @see #getLength
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract String getName (int i);
111f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
112f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Return the type of an attribute in the list (by position).
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>The attribute type is one of the strings "CDATA", "ID",
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES",
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * or "NOTATION" (always in upper case).</p>
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>If the parser has not read a declaration for the attribute,
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * or if the parser does not report attribute types, then it must
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * return the value "CDATA" as stated in the XML 1.0 Recommentation
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * (clause 3.3.3, "Attribute-Value Normalization").</p>
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>For an enumerated attribute that is not a notation, the
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * parser will report the type as "NMTOKEN".</p>
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param i The index of the attribute in the list (starting at 0).
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return The attribute type as a string, or
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         null if the index is out of range.
131f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @see #getLength
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getType(java.lang.String)
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract String getType (int i);
135f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
136f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Return the value of an attribute in the list (by position).
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>If the attribute value is a list of tokens (IDREFS,
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * ENTITIES, or NMTOKENS), the tokens will be concatenated
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * into a single string separated by whitespace.</p>
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param i The index of the attribute in the list (starting at 0).
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return The attribute value as a string, or
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         null if the index is out of range.
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getLength
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getValue(java.lang.String)
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract String getValue (int i);
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    ////////////////////////////////////////////////////////////////////
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // Lookup methods.
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    ////////////////////////////////////////////////////////////////////
157f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
158f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Return the type of an attribute in the list (by name).
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>The return value is the same as the return value for
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * getType(int).</p>
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>If the attribute name has a namespace prefix in the document,
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * the application must include the prefix here.</p>
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param name The name of the attribute.
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return The attribute type as a string, or null if no
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         such attribute exists.
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getType(int)
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract String getType (String name);
174f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
175f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Return the value of an attribute in the list (by name).
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>The return value is the same as the return value for
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * getValue(int).</p>
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>If the attribute name has a namespace prefix in the document,
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * the application must include the prefix here.</p>
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param name the name of the attribute to return
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return The attribute value as a string, or null if
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         no such attribute exists.
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getValue(int)
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract String getValue (String name);
191f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// end of AttributeList.java
195