8

我正在寻找这个定义以使我的 HTML 渲染器更符合要求。目前它正在猜测要保留哪个空格,要折叠哪个空格以及要扔什么。SGML 标准很难找到,而 HTML 标准似乎没有按照我的需要来处理这个主题。

目前,我的渲染器将 HTML 解析为树,然后执行递归布局传递以定位所有元素及其内容。我正在尝试在解析阶段抛出一些空格,即在某些情况下不发出仅空格的文本块。哪种情况适用于大多数情况,但有相当多的边缘情况很难处理。

(我还在研究 HTML 控件的编辑器子类,并且布局时间解决方案在编辑器中被证明有点问题,因此我正在努力让它们进入解析阶段。布局信息在重排之前不可用时间,这是您编辑文档后的一段时间。)

用连杆/火焰开火。

4

4 回答 4

10

我认为HTML 4 规范中的第 9.1 节空白是您正在寻找的内容。

于 2009-09-15T08:23:24.287 回答
5

所以我认为我最接近的答案是在这里: http ://www.w3.org/TR/CSS2/text.html#white-space-model

于 2012-11-01T00:48:59.877 回答
3

我可以为空格解析推荐这个解释:

https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Whitespace

于 2020-03-07T08:15:56.633 回答
2

如果您正在编写自己的 HTML 解析器,那么我强烈建议您使用 HTML 5 规范中的解析算法。http://www.whatwg.org/html5它涵盖了大量的边缘和角落案例,以及一般的浏览器怪异。浏览器不遵循 SGML 规则,但它们都在做 HTML 5 规范所说的事情,或者与其等效的功能。有几个可用的开源解析器可以实现该算法,所以它应该有你需要的一切。

于 2009-09-15T08:59:18.307 回答