Hmm..
Visst - vi kan gärna prata fel om du vill :e
XML kan vara svårt - ingen av de DTD:er du använder i dina testfall är korrekta, och eftersom inget av dina dokument alltså överhuvudtaget kan fås att validera (eftersom inget av dem har någon korrekt DTD att validera mot!) så undrar jag vad de egentligen ger som testfall betraktade ;)
Fallet Internal:
<!DOCTYPE foo [
<!ENTITY bar "PASS">
]>
<foo> &bar; </foo>
Bör vara:
<!DOCTYPE foo [
<!ELEMENT foo (#PCDATA)>
<!ENTITY bar "PASS">
]>
<foo> &bar; </foo>
- och fungerar även efter korrigeringen helt OK.
Fallet External:
Ersätter du DTD-koden
<!ENTITY foo "PASS">
med den korrekta varianten
<!ELEMENT foo (#PCDATA)>
<!ENTITY bar "PASS">
så ser du att MSIE:s XML-parser faktiskt laddar in den externa DTD:n i samband med validering av koden du använder som testfall
<!DOCTYPE foo SYSTEM "foo.dtd" >
<foo> &bar; </foo>
Om du inte tror mig, så ändra &bar; till &barr;... Du konstaterar då snabbt att det är först då som felmeddelandet om "felaktig entitet" dyker upp i MSIE ;)
Fallet "standalone"
Att en extern DTD:n inte laddas om man deklarerar XML-dokumentet som "standalone" säger sig som jag ser det självt eftersom "standalone" per definition innebär att alla typer av externa entiteter (som t.ex. DTD-filen i detta fall) skall ignoreras
Den fristående dokumentdeklarationen [standalone-attributet, min kommentar] MÅSTE ha värdet "no" om någon extern uppmärkningsdeklaration innehåller deklarationer av:
[...]
* entiteter (andra än amp, lt, gt, apos, quot), om anrop till dessa entiteter förekommer i dokumentet
[...]
Källa: http://www.xml.se/xml/REC-xml-sv/#sec-rmd
- så det exemplet ser jag egentligen inte heller som något skäl för att argumentera emot användandet av namngivna teckenkoder i XML eller XHTML eftersom man ju näppeligen lär köra med standalone="yes" i t.ex. XHTML (eller för den delen en XML-fil med extern DTD) speciellt ofta eller "per default" ;)
Jag menar, om man nu säger åt parsern att strunta i att ladda DTD:n känns det i min värld ganska mysko att sedan uppröra sig över att den inte laddats ;)
Sammanfattning
Visst - i materialet hos Roger som du länkar till, framgår att namngivna teckenentiteter inte funkar i Safari och i Opera med version < 7.5 (<= 7.5 på Mac) så det är inte problemfritt - men jag hävdar ändå att det är överdrivet att säga annat än att namngivna teckenentiteter funkar i de flesta webbläsarna när det gäller XHTML, men att det kan bli problem med dem i äldre Operor och i aktuella versioner av Safari ;)
När det gäller XML är läget sämre, men det funkar i MSIE iom att den faktiskt läser externa entiteter - åtminståne de som refereras i en <!DOCTYPE...
:birp