private void FixupAttributes(int attributeCount) {
for (int attr = 0; attr < attributeCount; attr ++) {
Debug.Assert(this.attributeList[attr] is BuilderInfo);
BuilderInfo info = (BuilderInfo) this.attributeList[attr];
if (Keywords.Equals(info.NamespaceURI, this.atoms.Empty)) {
info.Prefix = this.atoms.Empty;
}
else {
if (Keywords.Equals(info.Prefix, this.atoms.Empty)) {
info.Prefix = GetPrefixForNamespace(info.NamespaceURI);
}
else {
bool thisScope = false;
string nspace = this.scopeManager.ResolveNamespace(info.Prefix, out thisScope);
if (nspace != null) {
if (! Keywords.Equals(info.NamespaceURI, nspace)) {
if(thisScope) { // prefix conflict
info.Prefix = GetPrefixForNamespace(info.NamespaceURI);
}
else {
DeclareNamespace(info.NamespaceURI, info.Prefix);
}
}
}
else {
DeclareNamespace(info.NamespaceURI, info.Prefix);
}
}
}
}
}