2012-09-04 14 views
5

Estoy tratando de definir non breaking space entity en la declaración <!doctype />. Código:Entidad indefinida & nbsp Excepción de análisis 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"> 
    .. .... 

Pero aún cuando estoy creando un objeto XDocument del documento anterior, me estoy haciendo una excepción

Undefined entity &nbsp. 

lo que estoy haciendo mal?

Respuesta

3

primer lugar, la combinación de entidades externas e internas en "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [ <!ENTITY nbsp "&#x00A0;"> ] es innecesaria porque http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd incluye www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent que incluye <!ENTITY nbsp "&#160;"> que es exactamente el mismo que el suyo.

Así que poco debe ser sólo:

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

En segundo lugar, XDocument no valida a un DTD por defecto. Sin embargo, puede Load de un XmlValidatingReader o XmlTextReader con los ajustes apropiados

si es posible, [Si no es posible, que sea posible!] Que es una buena idea establecer el XmlReader para utilizar un XmlPreloadedResolver, porque hay una Mucha gente golpea al viejo W3C en el URI de esa DTD y los archivos .ent que incluye, y están totalmente de acuerdo con que uses una copia local (por "totalmente bien" quiero decir que estarían muy contentos si todos dejaran de golpear su servidor tanto). Además de ser bueno para ellos, será mucho más rápido para ti.

9

Puede intentar con esta entidad &#160; en su lugar.