Domparser的HTML5 Doctype

时间:2018-03-29 10:49:56

标签: html xml dtd domparser

任务:我想使用DOMParser(https://developer.mozilla.org/en-US/docs/Web/API/DOMParser)解析XML文档。我没有,也不需要正式的DTD并解析它,因为“text / xml”工作得很好。现在我想在我的xml中使用某些符号实体,例如& nbsp; ,而解析器当然抱怨它们不为人所知。由于我希望能够原则上访问所有现有的html实体,所以我尝试使用doctype规范

<!DOCTYPE html PUBLIC“ - // W3C // DTD XHTML 1.0 Strict // EN”“http://www.w3.org/TR/html4/strict.dtd”>

并且这按预期工作,因为DOMParser似乎有这个doctype和预加载的连接实体列表。但是,此doctype已过时。所以我尝试了新的<!DOCYTPE html>但这确实工作。这也是预期的,因为新的html5 doctype标签的工作方式与旧的基于xml / sgml的标签不同。

问题:是否有一些标准化的!DOCTYPE用于html(5),浏览器可以识别并包含预加载的HTML实体。 (我不想将所有实体的列表复制为单独的实体定义,浏览器将它们放在某处,我只是不知道如何通过xml / sgml样式DTD为html5激活它们)

1 个答案:

答案 0 :(得分:0)

如果您想继续使用XML,但又不想使用XHTML doctype,那么 可以直接在文档中通过ENTITY声明来声明XHTML的字符实体(在内部子集或外部声明集中),因为只有HTML有nbsp而其他许多人都是预定义实体(XML只有quotampapos,{{ 1}}和lt)。您可以使用https://www.w3.org/2003/entities/2007/htmlmathml-f.ent中的HTML5实体集(包括大量MathML实体)或更小的经典HTML4实体集。

但我首先检查DomParser是否实际使用标记声明处理标记声明和/或外部声明集。尝试解析以下

gt

并检查控制台是否有错误消息。

没有HTML的“官方”DTD(事实上,根本没有正式的语法),但是我的SGML DTD for W3C HTML 5.1提供了有关解析HTML5的更多信息,而不是您可能感兴趣的内容,包括有关HTML5预定义的信息实体。