private void FixupElement() {
Debug.Assert(this.mainNode.NodeType == XmlNodeType.Element);
if (Keywords.Equals(this.mainNode.NamespaceURI, this.atoms.Empty)) {
this.mainNode.Prefix = this.atoms.Empty;
}
if (Keywords.Equals(this.mainNode.Prefix, this.atoms.Empty)) {
if (Keywords.Equals(this.mainNode.NamespaceURI, this.scopeManager.DefaultNamespace)) {
// Main Node is OK
}
else {
DeclareNamespace(this.mainNode.NamespaceURI, this.mainNode.Prefix);
}
}
else {
bool thisScope = false;
string nspace = this.scopeManager.ResolveNamespace(this.mainNode.Prefix, out thisScope);
if (nspace != null) {
if (! Keywords.Equals(this.mainNode.NamespaceURI, nspace)) {
if (thisScope) { // Prefix conflict
this.mainNode.Prefix = GetPrefixForNamespace(this.mainNode.NamespaceURI);
}
else {
DeclareNamespace(this.mainNode.NamespaceURI, this.mainNode.Prefix);
}
}
}
else {
DeclareNamespace(this.mainNode.NamespaceURI, this.mainNode.Prefix);
}
}
OutputScope elementScope = this.scopeManager.CurrentElementScope;
elementScope.Prefix = this.mainNode.Prefix;
}