You can try to be backward compatible, but sometimes it's just better not to be. What if there was an XML parser that was missing some check for an invalid format, so you add the check, and someone who has been running the parser on the same (unknowingly incorrectly formatted) file day after day suddenly has their program blow up when they update the parser?
Of course, you should test before you update critical stuff...so caveat emptor, as always. And I'm not really talking about XML anyway, just my own glorified version of pack/unpack, Parse::FixedLength, where I noticed some errors that weren't being caught, and then some tests that broke when I started catching those errors. Although some may wonder why you would use such a module (see the thread that started it all), there are people that do use it (including me :), and I've found that changes do affect people. I'm just glad I wasn't sued :-)