Versioning xaml

One of the things we haven't talked a lot about is the versioning support built into xaml. Once version 2 of WPF comes out, we want people to be able to write xaml documents that take advantage of new, V2 features while still running as best is possible on machines that only have V1. Unlike some parts of WPF, we actually have pretty thorough documentation on this topic, because it's part of the XPS spec -- specifically appendix B of http://www.microsoft.com/whdc/xps/xpspkg.mspx. But the highlights:

xaml lets you declare certain name spaces as being ignorable -- "if you haven't heard of this namespace, just pretend those tags aren't even there, they're not that important". As in:

(this example ignores attributes, but you can also ignore whole tags) You can also specify the opposite of ignorable -- MustUnderstand. And there's also ProcessContent, which means in effect ignore me but pay attention to my children. And you can give multiple choices -- if you understand Foo, use this xaml, and if you don't use some other xaml: