我想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 " "> ] />
<html xmlns="http://www.w3.org/1999/xhtml">
.. ....
Run Code Online (Sandbox Code Playgroud)
但是当我从上面的文档创建一个XDocument对象时,我得到一个例外
Undefined entity  .
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
首先,外部和内部实体的组合"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [ <!ENTITY nbsp " "> ]是不必要的,因为http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd包含www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent其中包含<!ENTITY nbsp " ">与您的完全相同的。
所以那一点应该是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Run Code Online (Sandbox Code Playgroud)
其次,XDocument 默认情况下不验证 DTD。但是,您可以Load通过XmlValidatingReader或XmlTextReader进行适当的设置
如果可能的话,[如果不可能,那就让它成为可能!] 将 XmlReader 设置为使用 a 是一个好主意XmlPreloadedResolver,因为很多人在该 DTD 及其包含的 .ent 文件的 URI 上遇到了糟糕的 W3C,而且他们完全可以接受你使用它的本地副本(我所说的“完全可以”是指如果每个人都不再那么频繁地敲打他们的服务器,他们会非常高兴)。除了对他们有好处之外,对你来说也会更快。
| 归档时间: |
|
| 查看次数: |
10012 次 |
| 最近记录: |