Aber um auf die Ausgangsfrage zurückzukommen: Ein validierender XML- oder XHTML-Parser wird ein Leerzeichen in einem Attributwert sicher nicht in %20 umwandeln. Er stört sich aber auch nicht daran, denn Leerzeichen in Attributwerten sind vollkommen valide.
Aber gerade das steht doch gleich im ersten Satz: "Before the value of an attribute is passed to the application or checked for validity, the XML processor MUST normalize the attribute value by applying the algorithm below"
Und deshalb war mein Verständnis, dass im lexical space die Leerzeichen immer percent-encoded vorliegen (zumindest bei XHTML). Und normalized in Abhängigkeit von CDATA.