1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
/* * @(#)AttributeList.java 1.12 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package javax.swing.text.html.parser; import java.util.Vector; import java.util.Hashtable; import java.util.Enumeration; import java.io.*; /** * This class defines the attributes of an SGML element * as described in a DTD using the ATTLIST construct. * An AttributeList can be obtained from the Element * class using the getAttributes() method. * <p> * It is actually an element in a linked list. Use the * getNext() method repeatedly to enumerate all the attributes * of an element. * * @see Element * @author Arthur Van Hoff * @version 1.12 11/17/05 * */ public final class AttributeList implements DTDConstants, Serializable { public String name; public int type; public Vector<?> values; public int modifier; public String value; public AttributeList next; AttributeList() { } /** * Create an attribute list element. */ public AttributeList(String name) { this.name = name; } /** * Create an attribute list element. */ public AttributeList(String name, int type, int modifier, String value, Vector<?> values, AttributeList next) { this.name = name; this.type = type; this.modifier = modifier; this.value = value; this.values = values; this.next = next; } /** * @return attribute name */ public String getName() { return name; } /** * @return attribute type * @see DTDConstants */ public int getType() { return type; } /** * @return attribute modifier * @see DTDConstants */ public int getModifier() { return modifier; } /** * @return possible attribute values */ public Enumeration<?> getValues() { return (values != null) ? values.elements() : null; } /** * @return default attribute value */ public String getValue() { return value; } /** * @return the next attribute in the list */ public AttributeList getNext() { return next; } /** * @return string representation */ public String toString() { return name; } /** * Create a hashtable of attribute types. */ static Hashtable attributeTypes = new Hashtable(); static void defineAttributeType(String nm, int val) { Integer num = new Integer(val); attributeTypes.put(nm, num); attributeTypes.put(num, nm); } static { defineAttributeType("CDATA", CDATA); defineAttributeType("ENTITY", ENTITY); defineAttributeType("ENTITIES", ENTITIES); defineAttributeType("ID", ID); defineAttributeType("IDREF", IDREF); defineAttributeType("IDREFS", IDREFS); defineAttributeType("NAME", NAME); defineAttributeType("NAMES", NAMES); defineAttributeType("NMTOKEN", NMTOKEN); defineAttributeType("NMTOKENS", NMTOKENS); defineAttributeType("NOTATION", NOTATION); defineAttributeType("NUMBER", NUMBER); defineAttributeType("NUMBERS", NUMBERS); defineAttributeType("NUTOKEN", NUTOKEN); defineAttributeType("NUTOKENS", NUTOKENS); attributeTypes.put("fixed", new Integer(FIXED)); attributeTypes.put("required", new Integer(REQUIRED)); attributeTypes.put("current", new Integer(CURRENT)); attributeTypes.put("conref", new Integer(CONREF)); attributeTypes.put("implied", new Integer(IMPLIED)); } public static int name2type(String nm) { Integer i = (Integer)attributeTypes.get(nm); return (i == null) ? CDATA : i.intValue(); } public static String type2name(int tp) { return (String)attributeTypes.get(new Integer(tp)); } }