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.xerces.internal.xni; 23 24 /** 25 * The XMLAttributes interface defines a collection of attributes for 26 * an element. In the parser, the document source would scan the entire 27 * start element and collect the attributes. The attributes are 28 * communicated to the document handler in the startElement method. 29 * <p> 30 * The attributes are read-write so that subsequent stages in the document 31 * pipeline can modify the values or change the attributes that are 32 * propogated to the next stage. 33 * 34 * @see XMLDocumentHandler#startElement 35 * 36 * @author Andy Clark, IBM 37 * 38 */ 39 public interface XMLAttributes { 40 41 // 42 // XMLAttributes methods 43 // 44 45 /** 46 * Adds an attribute. The attribute's non-normalized value of the 47 * attribute will have the same value as the attribute value until 48 * set using the <code>setNonNormalizedValue</code> method. Also, 49 * the added attribute will be marked as specified in the XML instance 50 * document unless set otherwise using the <code>setSpecified</code> 51 * method. 52 * <p> 53 * <strong>Note:</strong> If an attribute of the same name already 54 * exists, the old values for the attribute are replaced by the new 55 * values. 56 * 57 * @param attrName The attribute name. 58 * @param attrType The attribute type. The type name is determined by 59 * the type specified for this attribute in the DTD. 60 * For example: "CDATA", "ID", "NMTOKEN", etc. However, 61 * attributes of type enumeration will have the type 62 * value specified as the pipe ('|') separated list of 63 * the enumeration values prefixed by an open 64 * parenthesis and suffixed by a close parenthesis. 65 * For example: "(true|false)". 66 * @param attrValue The attribute value. 67 * 68 * @return Returns the attribute index. 69 * 70 * @see #setNonNormalizedValue 71 * @see #setSpecified 72 */ 73 public int addAttribute(QName attrName, String attrType, String attrValue); 74 75 /** 76 * Removes all of the attributes. This method will also remove all 77 * entities associated to the attributes. 78 */ 79 public void removeAllAttributes(); 80 81 /** 82 * Removes the attribute at the specified index. 83 * <p> 84 * <strong>Note:</strong> This operation changes the indexes of all 85 * attributes following the attribute at the specified index. 86 * 87 * @param attrIndex The attribute index. 88 */ 89 public void removeAttributeAt(int attrIndex); 90 91 /** 92 * Returns the number of attributes in the list. 93 * <p> 94 * Once you know the number of attributes, you can iterate 95 * through the list. 96 * 97 * @see #getURI(int) 98 * @see #getLocalName(int) 99 * @see #getQName(int) 100 * @see #getType(int) 101 * @see #getValue(int) 102 */ 103 public int getLength(); 104 105 /** 106 * Look up the index of an attribute by XML 1.0 qualified name. 107 * 108 * @param qName The qualified (prefixed) name. 109 * 110 * @return The index of the attribute, or -1 if it does not 111 * appear in the list. 112 */ 113 public int getIndex(String qName); 114 115 /** 116 * Look up the index of an attribute by Namespace name. 117 * 118 * @param uri The Namespace URI, or the empty string if 119 * the name has no Namespace URI. 120 * @param localName The attribute's local name. 121 * 122 * @return The index of the attribute, or -1 if it does not 123 * appear in the list. 124 */ 125 public int getIndex(String uri, String localPart); 126 127 /** 128 * Sets the name of the attribute at the specified index. 129 * 130 * @param attrIndex The attribute index. 131 * @param attrName The new attribute name. 132 */ 133 public void setName(int attrIndex, QName attrName); 134 135 /** 136 * Sets the fields in the given QName structure with the values 137 * of the attribute name at the specified index. 138 * 139 * @param attrIndex The attribute index. 140 * @param attrName The attribute name structure to fill in. 141 */ 142 public void getName(int attrIndex, QName attrName); 143 144 /** 145 * Returns the prefix of the attribute at the specified index. 146 * 147 * @param index The index of the attribute. 148 */ 149 public String getPrefix(int index); 150 151 /** 152 * Look up an attribute's Namespace URI by index. 153 * 154 * @param index The attribute index (zero-based). 155 * 156 * @return The Namespace URI, or the empty string if none 157 * is available, or null if the index is out of 158 * range. 159 * 160 * @see #getLength 161 */ 162 public String getURI(int index); 163 164 /** 165 * Look up an attribute's local name by index. 166 * 167 * @param index The attribute index (zero-based). 168 * 169 * @return The local name, or the empty string if Namespace 170 * processing is not being performed, or null 171 * if the index is out of range. 172 * 173 * @see #getLength 174 */ 175 public String getLocalName(int index); 176 177 /** 178 * Look up an attribute's XML 1.0 qualified name by index. 179 * 180 * @param index The attribute index (zero-based). 181 * 182 * @return The XML 1.0 qualified name, or the empty string 183 * if none is available, or null if the index 184 * is out of range. 185 * 186 * @see #getLength 187 */ 188 public String getQName(int index); 189 190 //why the above method doens't return QName ? 191 public QName getQualifiedName(int index); 192 193 194 /** 195 * Sets the type of the attribute at the specified index. 196 * 197 * @param attrIndex The attribute index. 198 * @param attrType The attribute type. The type name is determined by 199 * the type specified for this attribute in the DTD. 200 * For example: "CDATA", "ID", "NMTOKEN", etc. However, 201 * attributes of type enumeration will have the type 202 * value specified as the pipe ('|') separated list of 203 * the enumeration values prefixed by an open 204 * parenthesis and suffixed by a close parenthesis. 205 * For example: "(true|false)". 206 */ 207 public void setType(int attrIndex, String attrType); 208 209 /** 210 * Look up an attribute's type by index. 211 * <p> 212 * The attribute type is one of the strings "CDATA", "ID", 213 * "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES", 214 * or "NOTATION" (always in upper case). 215 * <p> 216 * If the parser has not read a declaration for the attribute, 217 * or if the parser does not report attribute types, then it must 218 * return the value "CDATA" as stated in the XML 1.0 Recommentation 219 * (clause 3.3.3, "Attribute-Value Normalization"). 220 * <p> 221 * For an enumerated attribute that is not a notation, the 222 * parser will report the type as "NMTOKEN". 223 * 224 * @param index The attribute index (zero-based). 225 * 226 * @return The attribute's type as a string, or null if the 227 * index is out of range. 228 * 229 * @see #getLength 230 */ 231 public String getType(int index); 232 233 /** 234 * Look up an attribute's type by XML 1.0 qualified name. 235 * <p> 236 * See {@link #getType(int) getType(int)} for a description 237 * of the possible types. 238 * 239 * @param qName The XML 1.0 qualified name. 240 * 241 * @return The attribute type as a string, or null if the 242 * attribute is not in the list or if qualified names 243 * are not available. 244 */ 245 public String getType(String qName); 246 247 /** 248 * Look up an attribute's type by Namespace name. 249 * <p> 250 * See {@link #getType(int) getType(int)} for a description 251 * of the possible types. 252 * 253 * @param uri The Namespace URI, or the empty String if the 254 * name has no Namespace URI. 255 * @param localName The local name of the attribute. 256 * 257 * @return The attribute type as a string, or null if the 258 * attribute is not in the list or if Namespace 259 * processing is not being performed. 260 */ 261 public String getType(String uri, String localName); 262 263 /** 264 * Sets the value of the attribute at the specified index. This 265 * method will overwrite the non-normalized value of the attribute. 266 * 267 * @param attrIndex The attribute index. 268 * @param attrValue The new attribute value. 269 * 270 * @see #setNonNormalizedValue 271 */ 272 public void setValue(int attrIndex, String attrValue); 273 274 public void setValue(int attrIndex, String attrValue, XMLString value); 275 276 /** 277 * Look up an attribute's value by index. 278 * <p> 279 * If the attribute value is a list of tokens (IDREFS, 280 * ENTITIES, or NMTOKENS), the tokens will be concatenated 281 * into a single string with each token separated by a 282 * single space. 283 * 284 * @param index The attribute index (zero-based). 285 * 286 * @return The attribute's value as a string, or null if the 287 * index is out of range. 288 * 289 * @see #getLength 290 */ 291 public String getValue(int index); 292 293 /** 294 * Look up an attribute's value by XML 1.0 qualified name. 295 * <p> 296 * See {@link #getValue(int) getValue(int)} for a description 297 * of the possible values. 298 * 299 * @param qName The XML 1.0 qualified name. 300 * 301 * @return The attribute value as a string, or null if the 302 * attribute is not in the list or if qualified names 303 * are not available. 304 */ 305 public String getValue(String qName); 306 307 /** 308 * Look up an attribute's value by Namespace name. 309 * <p> 310 * See {@link #getValue(int) getValue(int)} for a description 311 * of the possible values. 312 * 313 * @param uri The Namespace URI, or the empty String if the 314 * name has no Namespace URI. 315 * @param localName The local name of the attribute. 316 * 317 * @return The attribute value as a string, or null if the 318 * attribute is not in the list. 319 */ 320 public String getValue(String uri, String localName); 321 322 /** 323 * Sets the non-normalized value of the attribute at the specified 324 * index. 325 * 326 * @param attrIndex The attribute index. 327 * @param attrValue The new non-normalized attribute value. 328 */ 329 public void setNonNormalizedValue(int attrIndex, String attrValue); 330 331 /** 332 * Returns the non-normalized value of the attribute at the specified 333 * index. If no non-normalized value is set, this method will return 334 * the same value as the <code>getValue(int)</code> method. 335 * 336 * @param attrIndex The attribute index. 337 */ 338 public String getNonNormalizedValue(int attrIndex); 339 340 /** 341 * Sets whether an attribute is specified in the instance document 342 * or not. 343 * 344 * @param attrIndex The attribute index. 345 * @param specified True if the attribute is specified in the instance 346 * document. 347 */ 348 public void setSpecified(int attrIndex, boolean specified); 349 350 /** 351 * Returns true if the attribute is specified in the instance document. 352 * 353 * @param attrIndex The attribute index. 354 */ 355 public boolean isSpecified(int attrIndex); 356 357 358 /** 359 * Look up an augmentation by attribute's index. 360 * 361 * @param attributeIndex The attribute index. 362 * @return Augmentations 363 */ 364 public Augmentations getAugmentations (int attributeIndex); 365 366 /** 367 * Look up an augmentation by namespace name. 368 * 369 * @param uri The Namespace URI, or the empty string if 370 * the name has no Namespace URI. 371 * @param localPart 372 * @return Augmentations 373 */ 374 public Augmentations getAugmentations (String uri, String localPart); 375 376 377 /** 378 * Look up an augmentation by XML 1.0 qualified name. 379 * <p> 380 * 381 * @param qName The XML 1.0 qualified name. 382 * 383 * @return Augmentations 384 * 385 */ 386 public Augmentations getAugmentations(String qName); 387 388 /** 389 * Sets the augmentations of the attribute at the specified index. 390 * 391 * @param attrIndex The attribute index. 392 * @param augs The augmentations. 393 */ 394 public void setAugmentations(int attrIndex, Augmentations augs); 395 396 397 398 399 } // interface XMLAttributes