Fumiaki Yoshimitu writes
DOM L3 Validation gets recommended.
Actually we've decided to rethink having a Validate() method on the class that is currently called XPathDocument2 because it may lead users down the wrong path. Our worry is that users will end up loading an XML document and then call Validate() on it thus incurring the cost of two passes over the document as opposed to the more efficient approach of loading the document with a validating XmlReader. For this reason we've removed the Validate() method from the class.
Also there is no plan to have XmlDocument support any DOM L3 feature. Moving forward, the primary representation of in-memory XML documents on the .NET Framework will be the class currently called XPathDocument2 and that is where the Microsoft WebData XML team's efforts will be spent.