2012-09-04 11 views
5

Ich versuche, non breaking space entity in der <!doctype /> Deklaration zu definieren. Code:Undefinierte Entität & nbsp XML-Parsing-Ausnahme

<!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"> 
    .. .... 

Aber immer noch, wenn ich aus dem obigen Dokument ein XDocument Objekt erschaffe, ich bin immer eine Ausnahme

Undefined entity &nbsp. 

Was mache ich falsch?

Antwort

3

Erstens ist die Kombination von externen und internen Einheiten in "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [ <!ENTITY nbsp "&#x00A0;"> ] ist nicht erforderlich, da http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdwww.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent enthält, die <!ENTITY nbsp "&#160;"> enthält, die genau wie Sie das gleiche ist.

dass Bit sollte also nur sein:

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

Zweitens XDocument nicht auf eine DTD standardmäßig nicht bestätigen. Sie können jedoch Load von einer XmlValidatingReader oder XmlTextReader mit den entsprechenden Einstellungen

Wenn möglich, [Wenn es nicht möglich ist, macht es möglich!] Es ist eine gute Idee, die XmlReader setzen ein XmlPreloadedResolver zu verwenden, weil es eine ist Viele Leute schlagen das schlechte alte W3C an der URI dieser DTD und den .ent-Dateien, die es enthält, und sie sind völlig in Ordnung mit dir, indem du eine lokale Kopie davon verwendest (von "total okay" ich meine, sie wären wirklich froh wenn jeder aufhören würde, seinen Server so zu hämmern). Abgesehen davon, dass es gut für sie ist, wird es viel schneller für Sie sein.

9

Sie können stattdessen mit dieser Entität &#160; versuchen.