3

我认为 XHTML 文档应该以与“严格”HTML 文档完全相同的标准遵从模式显示。

但是,它们显示元素的方式有所不同pre:在 HTML 文档中,如果<pre>开始标记后跟 LF(或 CRLF),则忽略此标记。在 XHTML 中并非如此。

示例:具有相同内容但呈现方式不同的HTML 文件XHTML 文件。
(或者,如果您认为给 HTML 文件和 XHTML 文件提供完全相同的内容(包括 DOCTYPE)是作弊,这里有两个遵循更经典规则的文件:HTML 4.01 strictXHTML 1.0 strict。)

那么,这是否意味着像这个 W3C page的声明

所有换行符和空格都完全按照它们在 HTML 中的显示方式呈现。例外是在开始标记 <pre> 之后和结束标记 </pre> 之前的换行符,它们被丢弃。

仅对 HTML 有效,对 XHTML 无效?我没有发现任何迹象表明 XHTML 可以根据需要以不同的方式显示内容。但是我测试过的所有浏览器都可以。

4

1 回答 1

1

删除起始换行符与 HTML 中的呈现无关,而且 Dave Raggett 的页面只是有点不精确并且有点过时了。删除起始换行符是 HTML解析器的一个属性。

in bodytext/html tree 构建阶段, mime 类型的 HTML5 规范说:

一个开始标签,其标签名称是以下之一:“pre”、“listing”

如果打开元素的堆栈在按钮范围内有 ap 元素,则关闭 ap 元素。

为令牌插入一个 HTML 元素。

如果下一个标记是“LF”(U+000A)字符标记,则忽略该标记并继续下一个标记。(为方便创作,忽略 pre 块开头的换行符。)

将 frameset-ok 标志设置为“not ok”。

XML 解析规则根本不允许 XML 解析器执行此操作,因此 XHTML 不会删除该新行。

于 2013-07-18T18:20:45.893 回答