Po pierwsze, połączenie podmiotów zewnętrznych i wewnętrznych, w "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [ <!ENTITY nbsp " "> ]
jest zbędne, ponieważ http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
obejmuje www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent
który obejmuje <!ENTITY nbsp " ">
który jest dokładnie takie same.
Więc nieco powinno być po prostu:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
drugie, XDocument nie sprawdza się DTD domyślnie. Można jednak Load
z XmlValidatingReader
lub XmlTextReader
z odpowiednimi ustawieniami
jeśli to możliwe, [Jeśli nie jest to możliwe, to możliwe!], Że to dobry pomysł, aby ustawić XmlReader do używania XmlPreloadedResolver
, ponieważ istnieje wiele osób uderza w biednego W3C na URI tego DTD i plików .ent, które zawiera, i są całkowicie w porządku z tobą używając lokalnej kopii (przez "totalnie w porządku" mam na myśli, że byliby naprawdę zadowoleni gdyby wszyscy przestali tak mocno uderzać swoim serwerem). Poza tym, że są dla nich dobre, dla ciebie będzie to znacznie szybsze.