5

我试图non breaking space entity<!doctype />声明中定义。代码 :

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

但是当我从上面的文档中创建一个 XDocument 对象时,我还是遇到了一个异常

Undefined entity &nbsp. 

我做错了什么?

4

2 回答 2

11

您可以尝试使用此实体&#160;

于 2012-09-04T15:49:41.050 回答
3

首先,外部和内部实体的组合"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [ <!ENTITY nbsp "&#x00A0;"> ]是不必要的,因为http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd包含www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent哪些<!ENTITY nbsp "&#160;">与您的完全相同。

所以那一点应该是:

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

其次,默认情况下 XDocument 不验证 DTD。但是,您可以LoadXmlValidatingReaderXmlTextReader使用适当的设置

如果可能的话,[如果不可能,就让它成为可能!] 将 XmlReader 设置为使用 a 是个好主意XmlPreloadedResolver,因为有很多人在该 DTD 的 URI 和它包含的 .ent 文件上遇到了糟糕的 ol' W3C,而且他们'完全同意你使用它的本地副本(通过“完全可以”我的意思是如果每个人都停止对他们的服务器进行如此多的锤击,他们会非常高兴)。除了对他们有好处之外,它对你来说也会更快。

于 2012-09-04T16:47:08.800 回答