因此,在阅读DOM level 2 spec found时,我发现了以下代码
<!DOCTYPE ex SYSTEM "ex.dtd" [
<!ENTITY foo "foo">
<!ENTITY bar "bar">
<!ENTITY bar "bar2">
<!ENTITY % baz "baz">
]>
<ex/>虽然我理解为什么在将它插入html时它会如此崩溃,但为什么它仍然显示]>,但仍然解析出html中的<ex/>结束标记?
发布于 2013-03-23 13:37:03
它根本不是HTML。它只是一段相当普通的XML。在形式上,“ex.dtd”是指应该包含文档类型定义(DTD)的外部资源(例如另一个文件)。
当您在将通用XML作为HTML (例如,在HTTP头中指定Content-Type: text/html )的浏览器中抛出它时,可能会发生一些有趣的事情。浏览器尝试将其解析为HTML。
具体地说,浏览器不读取DTD,也不通过正式规范解析文档类型声明(DOCTYPE声明)-它们只识别一组有限的特定doctype字符串。他们不认识...thing,它是一个包含DTD的“内部子集”的XML (和SGML)构造,即用额外的声明扩充外部DTD的一种方法,比如这里的实体声明。当他们在第一个实体声明中看到“<”时,他们期望doctype字符串已经结束,忽略这些声明,然后将“]>”视为字符数据。
https://stackoverflow.com/questions/15583574
复制相似问题