【问题标题】:White space handling in XHTMLXHTML 中的空白处理
【发布时间】:2010-05-14 17:56:21
【问题描述】:

有没有关于如何正确处理 XHTML(1.0 过渡)中的空格的信息?似乎 XHTML 不使用标准的 XML 空白处理。

编辑: Mayby 我对我到底在寻找什么有点不精确。我对元素如何呈现比 XML 处理器如何处理它更感兴趣。 例如,以下内容将在中间呈现 1 个空格:

<em> em content </em> following text

如果空格确实有自己的格式,情况会变得更加复杂,例如&lt;a href="http://www.google.de"&gt; content of the hyperlink &lt;/a&gt; content after the hyperlink 将在超链接末尾有一个带下划线的空格,而&lt;a href="http://www.google.de"&gt; content of the hyperlink&lt;/a&gt; content after the hyperlink&lt;br /&gt; 不会在空格下划线。

似乎空格总是附加到先前的格式化范围,并且空格是通过(内联)元素开始和结束标记处理的。但这仅基于测试,我想知道是否有某种规范说明其行为方式。

【问题讨论】:

  • 更有可能是您使用的浏览器无法正确处理它。 XHTML XML,但有些浏览器会将其视为一堆 HTML 标记。更多:w3.org/MarkUp/2004/xhtml-faq#ie
  • 这也可能有帮助:w3.org/MarkUp/2004/xhtml-faq#xmlspace
  • 也许我已经老了,但据我所知,空白只有两种方法:1.保留:“ a b string> " 将在 a 和 b 或 2 之间有 3 个空格。默认值:上面在 a 和 b 之间没有空格(都被剥离)。两者都不是(在IE和FF中测试),它们之间有1个空格。

标签: xhtml whitespace


【解决方案1】:

来自W3C Recommendation

4.7。属性值中的空白处理

当用户代理处理属性时, 他们根据第 3.3.3 节执行此操作 [XML]:

  • 带前尾白色 空间。
  • 映射一个或多个序列 空白字符(包括行 break) 到单个单词间空间。

对于标签之间的空格,请参阅section 3.2 标准 9:

3.2.用户代理一致性

[1-8 剪断]

9. 空格按以下规则处理。 [XML] 空白字符中定义了以下字符:

  • 空间(&amp;#x0020;)
  • 水平制表(&amp;#x0009;)
  • 回车(&amp;#x000D;)
  • 线路提要(&amp;#x000A;)

XML 处理器将不同系统的行结束代码标准化为一个单独的 LINE FEED 字符,然后传递给应用程序。

用户代理必须使用 CSS 中的定义来处理空白字符 [CSS2]。请注意,CSS2 建议并未明确解决非拉丁字符集中的空白处理问题。这将在未来版本的 CSS 中解决,届时将更新此参考。

另见C.15部分:

C.15。 HTML 与 XML 中的空白字符

某些在 HTML 文档中合法的字符在 XML 文档中是非法的。例如,在 HTML 中,Formfeed 字符(U+000C)被视为空格,在 XHTML 中,由于 XML 对字符的定义,它是非法的。

【讨论】:

  • 这也会影响标签之间的空格吗?这似乎仅限于属性值。
  • 感谢您的回答(以及您为此付出的努力),但这并不是我想要的(请参阅我在原始问题中的编辑)
【解决方案2】:

似乎没有关于如何在 XHTML 中呈现空白的真正文档。这是我通过实验发现的:

  1. 即使在同一块内的开始和结束标记上,空格也会减少为一个空格
  2. 空格将被放入包含标签的格式化范围内。如果它跨越两个标签,它将被添加到第一个标签。
  3. 块元素或 span 元素的开头和结尾处的空格,它们是其块中的第一个子元素/最后一个子元素。
  4. 块元素外的空格会被忽略。

这就是我能想到的。有点遗憾的是 XHTML 规范不包含有关呈现空白的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2020-05-09
    • 1970-01-01
    相关资源
    最近更新 更多