2012-09-04 16 views
5

Sto tentando di definire nella dichiarazione <!doctype />. Codice:Entità non definita & nbsp eccezione di parsing XML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [ <!ENTITY nbsp "&#x00A0;"> ] /> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
    .. .... 

Ma ancora quando io sono la creazione di un oggetto XDocument dal documento di cui sopra, io sono sempre un'eccezione

Undefined entity &nbsp. 

quello che sto facendo di sbagliato?

risposta

3

In primo luogo, la combinazione di entità esterne e interne "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [ <!ENTITY nbsp "&#x00A0;"> ] è necessario perché http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd include www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent che comprende <!ENTITY nbsp "&#160;"> che è esattamente uguali ai suoi.

Così quel po 'dovrebbe essere solo:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

In secondo luogo, XDocument non convalida ad un DTD per impostazione predefinita. Tuttavia, è possibile Load da un XmlValidatingReader o XmlTextReader con le impostazioni appropriate

Se possibile, [Se non è possibile, rendere possibile!] È una buona idea per impostare il XmlReader per usare un XmlPreloadedResolver, perché c'è un molte persone colpiscono il povero vecchio W3C all'URI di quel DTD e i file .enti che include, e stanno completamente bene con voi usando una copia locale di esso (per "totalmente ok" intendo che sarebbero davvero contenti se tutti smettessero di battere il loro server così tanto). Oltre ad essere buono per loro, sarà molto più veloce per te.

9

Si può provare con questa entità &#160; invece.