+ if (prefix == null)
+ prefix = String.Empty;
+ if (namespaceURI == null)
+ namespaceURI = String.Empty;
+
+ // Prefix "xml" should be also checked (http://www.w3.org/XML/xml-names-19990114-errata#NE05)
+ // but MS.NET ignores such case.
+ if (prefix == "xmlns" || (prefix == "" && localName == "xmlns"))
+ if (namespaceURI != XmlNamespaceManager.XmlnsXmlns)
+ throw new ArgumentException ("Invalid attribute namespace for namespace declaration.");
+ else if (prefix == "xml" && namespaceURI != XmlNamespaceManager.XmlnsXml)
+ throw new ArgumentException ("Invalid attribute namespace for namespace declaration.");
+
+ // There are no means to identify the DOM is namespace-
+ // aware or not, so we can only check Name validity.
+ if (prefix != "" && !XmlChar.IsName (prefix))
+ throw new ArgumentException ("Invalid attribute prefix.");
+ else if (!XmlChar.IsName (localName))
+ throw new ArgumentException ("Invalid attribute local name.");
+