我认为XHTML文档应该以与“严格”HTML文档完全相同的标准合规模式显示。
但是,它们显示pre
元素的方式有所不同:在HTML文档中,如果<pre>
开始标记后面跟着一个LF(或CRLF),则忽略它。在XHTML中并非如此。
示例:HTML file和XHTML file内容相同但呈现方式不同。
(或者,如果您认为给予HTML文件和XHTML文件完全相同的内容(包括DOCTYPE)是一种欺骗,这里有两个遵循更多经典规则的文件:HTML 4.01 strict和XHTML 1.0 strict。)
那么,这是否意味着this W3C page的陈述
所有换行符和空格的呈现方式与HTML中显示的完全相同。例外是在开始标记&lt; pre&gt;之后的新行。并且在结束标记&lt; / pre&gt;之前,它们被丢弃。
仅对HTML有效,而不适用于XHTML?我没有发现任何迹象表明XHTML可以根据需要以不同的方式显示。但是我测试过的所有浏览器都有。
答案 0 :(得分:1)
删除起始换行符与HTML中的呈现无关,而Dave Raggett的页面只是有点不精确并且有点过时了。删除起始换行符是HTML 解析器的属性。
在in body树构建阶段,text/html
mime类型的HTML5规范说:
标记名称为以下之一的开始标记:“pre”,“listing”
如果打开元素的堆栈在按钮范围内有p元素,则关闭p元素。
为令牌插入HTML元素。
如果下一个标记是“LF”(U + 000A)字符标记,则忽略该标记和 继续下一个。 (Prelines开头的Newlines 作为创作方便,会忽略块。)
将frameset-ok标志设置为“not ok”。
根据XML解析规则,不允许XML解析器执行此操作,因此XHTML不会删除该新行。