1 57 58 package com.sun.org.apache.xerces.internal.impl.xs.opti; 59 60 import org.w3c.dom.Attr ; 61 import org.w3c.dom.Document ; 62 import org.w3c.dom.NamedNodeMap ; 63 import org.w3c.dom.Node ; 64 65 71 public class ElementImpl extends DefaultElement { 72 73 SchemaDOM schemaDOM; 74 Attr [] attrs; 75 int row; 76 int col; 77 int parentRow; 78 79 int line; 80 int column; 81 82 public ElementImpl(int line, int column) { 83 row = -1; 84 col = -1; 85 parentRow = -1; 86 nodeType = Node.ELEMENT_NODE; 87 88 this.line = line; 89 this.column = column; 90 } 91 92 93 public ElementImpl(String prefix, String localpart, String rawname, 94 String uri, int line, int column) { 95 super(prefix, localpart, rawname, uri, Node.ELEMENT_NODE); 96 row = -1; 97 col = -1; 98 parentRow = -1; 99 100 this.line = line; 101 this.column = column; 102 } 103 104 105 109 public Document getOwnerDocument() { 110 return schemaDOM; 111 } 112 113 114 public Node getParentNode() { 115 return schemaDOM.relations[row][0]; 116 } 117 118 119 public boolean hasChildNodes() { 120 if (parentRow == -1) { 121 return false; 122 } 123 else { 124 return true; 125 } 126 } 127 128 129 public Node getFirstChild() { 130 if (parentRow == -1) { 131 return null; 132 } 133 return schemaDOM.relations[parentRow][1]; 134 } 135 136 137 public Node getLastChild() { 138 if (parentRow == -1) { 139 return null; 140 } 141 int i=1; 142 for (; i<schemaDOM.relations[parentRow].length; i++) { 143 if (schemaDOM.relations[parentRow][i] == null) { 144 return schemaDOM.relations[parentRow][i-1]; 145 } 146 } 147 if (i ==1) { 148 i++; 149 } 150 return schemaDOM.relations[parentRow][i-1]; 151 } 152 153 154 public Node getPreviousSibling() { 155 if (col == 1) { 156 return null; 157 } 158 return schemaDOM.relations[row][col-1]; 159 } 160 161 162 public Node getNextSibling() { 163 if (col == schemaDOM.relations[row].length-1) { 164 return null; 165 } 166 return schemaDOM.relations[row][col+1]; 167 } 168 169 170 public NamedNodeMap getAttributes() { 171 return new NamedNodeMapImpl(attrs); 172 } 173 174 175 public boolean hasAttributes() { 176 return (attrs.length == 0 ? false : true); 177 } 178 179 180 181 185 public String getTagName() { 186 return rawname; 187 } 188 189 190 public String getAttribute(String name) { 191 192 for (int i=0; i<attrs.length; i++) { 193 if (attrs[i].getName().equals(name)) { 194 return attrs[i].getValue(); 195 } 196 } 197 return ""; 198 } 199 200 201 public Attr getAttributeNode(String name) { 202 for (int i=0; i<attrs.length; i++) { 203 if (attrs[i].getName().equals(name)) { 204 return attrs[i]; 205 } 206 } 207 return null; 208 } 209 210 211 public String getAttributeNS(String namespaceURI, String localName) { 212 for (int i=0; i<attrs.length; i++) { 213 if (attrs[i].getLocalName().equals(localName) && attrs[i].getNamespaceURI().equals(namespaceURI)) { 214 return attrs[i].getValue(); 215 } 216 } 217 return ""; 218 } 219 220 221 public Attr getAttributeNodeNS(String namespaceURI, String localName) { 222 for (int i=0; i<attrs.length; i++) { 223 if (attrs[i].getName().equals(localName) && attrs[i].getNamespaceURI().equals(namespaceURI)) { 224 return attrs[i]; 225 } 226 } 227 return null; 228 } 229 230 231 public boolean hasAttribute(String name) { 232 for (int i=0; i<attrs.length; i++) { 233 if (attrs[i].getName().equals(name)) { 234 return true; 235 } 236 } 237 return false; 238 } 239 240 241 public boolean hasAttributeNS(String namespaceURI, String localName) { 242 for (int i=0; i<attrs.length; i++) { 243 if (attrs[i].getName().equals(localName) && attrs[i].getNamespaceURI().equals(namespaceURI)) { 244 return true; 245 } 246 } 247 return false; 248 } 249 250 251 public void setAttribute(String name, String value) { 252 for (int i=0; i<attrs.length; i++) { 253 if (attrs[i].getName().equals(name)) { 254 attrs[i].setValue(value); 255 return; 256 } 257 } 258 } 259 260 261 public int getLineNumber() { 262 return line; 263 } 264 265 266 public int getColumnNumber() { 267 return column; 268 } 269 270 } 271 | Popular Tags |