// get element name
String elementName = fStringPool.toString(elementDecl.rawname);
// 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
// get attribute name and value index
String attrName = fStringPool.toString(attributeDecl.rawname);
String attrValue = fStringPool.toString(attDefaultValue);
// create attribute and set properties
boolean nsEnabled = false;
try { nsEnabled = getNamespaces(); }
catch (SAXException s) {}
AttrImpl attr;
if (nsEnabled) {
String namespaceURI = fStringPool.toString(attributeDecl.uri);
// 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.
String prefix = fStringPool.toString(attributeDecl.prefix);
// hide that our parser uses an empty string for null
if (namespaceURI.length() == 0) {
namespaceURI = null;
}
if (namespaceURI == null) {
if (prefix != null) {
if (prefix.equals("xmlns")) {
namespaceURI = "http://www.w3.org/2000/xmlns/";
}
} else if (attrName.equals("xmlns")) {
namespaceURI = "http://www.w3.org/2000/xmlns/";
}
}
attr = (AttrImpl)fDocumentImpl.createAttributeNS(namespaceURI,attrName);
}
else{
attr = (AttrImpl)fDocumentImpl.createAttribute(attrName);
}
attr.setValue(attrValue);
attr.setSpecified(false);
// add default attribute to element definition
if(nsEnabled){
elementDef.getAttributes().setNamedItemNS(attr);
}
else{
elementDef.getAttributes().setNamedItem(attr);
}
}
//
// Create attribute declaration