小编Met*_*aEd的帖子

结束标记是否应该使用省略的结束标记关闭所有未闭合的中间开始标记?

我读HTML 4.01标准错了,还是谷歌?在HTML 4.01中,如果我写:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
<html> <head> <body>plain <em>+em <strong>+strong </em>-em
Run Code Online (Sandbox Code Playgroud)

Google Chrome中的呈现是:

普通+ em + - em

这似乎违背了HTML 4.01标准,总结了下面的SGML规则为:"结束标记关闭,返回到匹配的开始标记,省略结束标记所有未关闭的中介开始标记".¹

也就是说,</em>结束标记不仅应该关闭<em>开始标记,还应该关闭未关闭的插入<strong>开始标记,并且渲染应该是:

普通+ em + 强 - em

一位意见提供者指出,将标签打开是不好的做法,但这只是一个学术性的例子.一个同样好的例子是:<em> +em <strong> +strong </em> -em </strong>.根据HTML 4.01标准我的理解是,由于重叠元素,此代码片段无法按预期工作:</em>结束标记应隐式关闭<strong>.它确实按预期工作的事实令人惊讶,这就是我的问题所在.

事实证明我在这个问题中提出了一个错误的二分法:谷歌和我都没有读错HTML 4.01标准.w3.org的一位私人记者向我指出了Web SGML和HTML 4.0由Martin Bryan解释,他解释说"解析程序将自动关闭任何当前打开的嵌入式元素,当前它被声明为具有可省略的结束标记.遇到更高级别元素的结束标记.(如果无法省略其结束标记的嵌入式元素仍然打开,则程序将报告编码中的错误.)" ²(强调添加.)Bryan对SGML标准的总结是正确的,并且HTML 4.01的总结是错误的.

html sgml html4

4
推荐指数
2
解决办法
1208
查看次数

标签 统计

html ×1

html4 ×1

sgml ×1