Versioning: Namespaces or Attributes

Don mentioned my being a namespace versioning fan.  I admit it, I am.

I will also mention that I am not one of the web servae who think that the looser you are coupled, the better--but that is a discussion for another time.

As for the attribute approach being more beneficial because you can do something like:

if (dom.Attributes["version"] < latestVersion) ...

so add an [XmlIgnore] version property to the class that you deserialize into.

I definitely do not like the idea of having version info in two different places in the XML (because even with the attribute approach, the namespace still controls a level of versioning).  So even if you are on a platform that doesn't serialize/deserialize xml into objects for you, you will still have to check the namespace, then check the attribute to determine your version.