The real lesson of XHTML
Let's say it plainly: XHTML is a failure. It is broadly unsupported, barely used for real, and further standards work has been abandoned.
(Yes, yes, there are lots of people with XHTML badges on their web pages. Many of them fail XHTML validation, and of those that validate almost none are being served as XHTML. See here.)
The real lesson that people learned from XHTML and its failure is simple: web standards are ultimately created by what major browser vendors are willing to implement.
As a consequence, people also learned that there is no point in working on standards that browsers are not going to implement and not that much point in working on standards that you are not reasonably certain that they will. Everyone saw the amount of effort and energy poured into XHTML (not just on creating the standard itself but also on advocacy, tools and so on), and all of it for nothing in the end.
(The consequences of this lesson learned are pretty predictable, and we are seeing some of them in action today with HTML5.)
This is not a new development in web standards; it has always been this
way, right from the start when Mosaic created the
<img> tag by fiat
and working code. It is just that XHTML made it glaringly obvious
because it was the first major web standard that a major browser
vendor completely balked at, plus it was a change with no backwards
compatibility path so this balk could not be papered over.
(You cannot serve the same document in the same way to both MS IE and XHTML capable browsers and have it be W3C-proper XHTML. You need at least server side support to switch the content-type.)
Accepting this is not surrendering to browser vendors; it is acknowledging reality. Web standards are simply not forced standards, or at least not the sort where you can write a specification and magically make people implement it, and they never have been.
(As de facto standards many aspects of the web are forced standards for most people, but this is interoperability and market forces at work.)