When I think of REST, the biggest benefit always revolves around using XML dynamically. It is a matter of reducing the contracts to their smallest possible state. This is why technology like Atom and RSS have flourished, they are totally "abusable". Dynamic XML involves taking this "abusability principle" and applying it to XML. My previous comments on Schematron reflects this mindset. Using dynamically typed languages also helps. Thinking in terms of resources and representations also pushes flexibility over functions and objects.

Dynamic XML involves a subtle constraint of robustness. A huge reason this concept works is because it sets developer expectations. If you expect that you are going to get large variety of XML, it is much easier to disregard everything as long as there is a value at "//xyz:my-value". This is almost exactly the same practice as a function that accepts some object that has an attribute you need. In both cases you will most likely still be checking the actual value anyway, so why force the entire object or XML to be meet requirements that just don’t matter.

When you think of all the recent discussions on functional programming, monads, duck typing and dynamic languages in general, it is clear the programming landscape is changing. I think many programmers have benefited from taking a serious look at these ideas. There is no reason the same ideas can’t be applied to XML with the same result of finding new ways of solving problems.