【问题标题】:HTML5 Doctype for DomparserDomparser 的 HTML5 文档类型
【发布时间】:2018-03-30 07:14:28
【问题描述】:

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

ttp://www.w3.org/TR/html4/strict.dtd" rel="nofollow" target="_blank">http://www.w3.org/TR/html4/strict.dtd">

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

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

【问题讨论】:

    标签: html xml dtd domparser


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 非常感谢您提供的广泛而有用的信息。特别是链接非常有帮助。 DomParser 似乎可以正确处理外部声明,但缺少一些不值得一提的行为特性。
    猜你喜欢
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 2011-05-02
    相关资源
    最近更新 更多