Ik kan dit de hele dag doen hoor.

Wellus.

Dus of de encoding moet vooraf bekend zijn gemaakt (bijv. in HTTP headers), of de encoding moet duidelijk zijn door de aanwezigheid van een BOM, of de prolog moet encoded zijn in UTF-8 (of een subset daarvan, zoals ASCII).
Dat staat er niet. Er staat dat als er geen externe informatie over de codering gegeven is, dan mag het document (1) niet gecodeerd zijn in een andere codering dan er gedeclareerd is (op zich logisch) en (2) het moet óf beginnen met een BOM, óf de encoding moet gedeclareerd worden óf de codering moet in UTF-8 zijn. Dat betekent dus dat als er geen declaratie en geen BOM is, de defaultcodering UTF-8 is. Ook dat is redelijk. Maar het laatste geval blijft over: als er wél een declaratie is dan moet je die gebruiken, maar om die te kunnen parsen moet je eerst weten welke codering er gebruikt wordt, en dus zit je wederom in de loop.
Volgens jouw logica zou je een XML document niet in EBCDIC kunnen coderen, of dan zou je de header in ASCII moeten coderen, maar er wordt expliciet genoemd dat dat niet het geval is.
Is dus geen 'gokken' maar gewoon het volgen van de spec.
Is dus wel 'gokken' in zoverre dat de spec geen listing van mogelijke encodings geeft en je dus niet kunt bepalen of je de codering goed ingeschat hebt. Nu jij weer.
edit:
Stiekum je post editten hè?!
Als je dit koppelt aan het "gok-algoritme" in
appendix E, dat jij ook beschrijft, is er weinig meer te gokken.
Behalve dat dat een niet-normatief voorbeeld is en er ook geen uitputtende lijst met coderingen wordt gegeven. Ze geven daar bovendien toe dat het in z'n algemeenheid niet werkt:
In the general case, this is a hopeless situation.
[
Voor 13% gewijzigd door
Soultaker op 20-11-2010 18:29
]