// get the default value
if (defaultValue != null) {
// get element definition node
NamedNodeMap elements = ((DocumentTypeImpl)fDocumentType).getElements ();
ElementDefinitionImpl elementDef = (ElementDefinitionImpl)elements.getNamedItem (elementName);
if (elementDef == null) {
elementDef = fDocumentImpl.createElementDefinition (elementName);
((DocumentTypeImpl)fDocumentType).getElements ().setNamedItem (elementDef);
}
// REVISIT: Check for uniqueness of element name? -Ac
// create attribute and set properties
boolean nsEnabled = fNamespaceAware;
AttrImpl attr;
if (nsEnabled) {
String namespaceURI = null;
// DOM Level 2 wants all namespace declaration attributes
// to be bound to "http://www.w3.org/2000/xmlns/"
// So as long as the XML parser doesn't do it, it needs to
// done here.
if (attributeName.startsWith("xmlns:") ||
attributeName.equals("xmlns")) {
namespaceURI = NamespaceContext.XMLNS_URI;
}
else if (attributeName.startsWith("xml:")) {
namespaceURI = NamespaceContext.XML_URI;
}
attr = (AttrImpl)fDocumentImpl.createAttributeNS (namespaceURI,
attributeName);
}
else {
attr = (AttrImpl)fDocumentImpl.createAttribute (attributeName);
}
attr.setValue (defaultValue.toString ());
attr.setSpecified (false);
attr.setIdAttribute ("ID".equals (type));
// add default attribute to element definition
if (nsEnabled){
elementDef.getAttributes ().setNamedItemNS (attr);
}
else {
elementDef.getAttributes ().setNamedItem (attr);
}
}
} // if NOT defer-node-expansion