I originally wrote this as a comment to a recent entry of Eric’s, but I decided to post it here instead:
First off, it’s Jon Postel, not John.
That said, I agree with Eric (and, surprisingly, Dave Winer). I think Postel’s idea was that you shouldn’t capriciously reject data that you knew perfectly well how to parse, not that you should bend over backwards to be bug-for-bug compatible with Internet Explorer.
For one thing, implementations that are too tightly restrictive in their input tend not to be very forwards-compatible: When we first implemented HTTP/1.1, there were problems with servers that expected every request to start with “HTTP/1.0”, and got upset with the newer version number. Likewise, some early Web browsers gave an error when they encountered a tag that they didn’t understand. <BLINK> obviously put an end to that…
That said, XML has very well defined extension and forward compatibility standards, and I support the idea of just not accepting invalid XML. It makes the job of both the client and the producer that much easier, assuming the producer is not human. And there lies the rub: XML was never designed to be written by humans, regardless of how much it looks like text. Unfortunately, humans seem to insist on writing it anyway, especially the XHTML and RSS variants.
I wonder if it wouldn’t be a good idea to have an Apache module that would filter the XML types through some sort of “strictifier” that made sure that everything that came out of the server was completely valid XML. It could come enabled by default… Maybe when I get a few extra round tuits.