While the inability to carry arbitrary payload without escaping special characters is certainly a nuisance, it has absolutely nothing to do with abstraction or leaks therein.
As far as I know there are essentially only two known techniques for protocol layering to allow arbitrary content to be embedded as payload in a higher-layer protocol. One technique is to reserve a token to mean "end of payload", which means this token cannot appear in the payload without escaping; the other is to use a length-of-payload field in the header. Neither is convenient for human users, but the use of an end-of-payload token has become far more popular, probably for very good reasons. One can argue with the detail of the way it's done in XML, for example why two characters are reserved rather than only one, but it's hard to argue with the principle.
Michael Kay Saxonica |