HTML5 Domparser 的文档类型

HTML5 Doctype for Domparser

任务: 我想使用 DOMParser (https://developer.mozilla.org/en-US/docs/Web/API/DOMParser) 解析 XML 文档。我没有也不需要正式的 DTD,并且将其解析为 "text/xml" 效果很好。现在我想在我的 xml 中使用某些符号实体,例如  ,解析器当然会抱怨它们是未知的。由于原则上我希望能够访问所有现有 html 实体,因此我尝试使用文档类型规范

http://www.w3.org/TR/html4/strict.dtd">

这按预期工作,因为 DOMParser 似乎预加载了此文档类型和连接的实体列表。但是,此文档类型已过时。所以我尝试了新的 但这 没有 工作。这也是预料之中的,因为新的 html5 doctype 标签的工作方式与旧的基于 xml/sgml 的标签不同。

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

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

但我会首先检查 DomParser 是否实际处理带有标记声明的标记声明 and/or 外部声明集。尝试解析以下内容

<?xml version="1.0"?>
<!DOCTYPE test [
  <!ENTITY nbsp "&#xA0;">
]>
<test>
  &nbsp;
</test>

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

HTML 没有 "official" DTD(事实上,根本没有正式的语法),但是我的 SGML DTD for W3C HTML 5.1 有更多关于解析 HTML 的信息5 比您可能感兴趣的更多,包括有关 HTML5 的预定义实体的信息。