XML/HTML 标记内的空白

Posted

技术标签:

【中文标题】XML/HTML 标记内的空白【英文标题】:White space inside XML/HTML tags 【发布时间】:2011-03-19 21:02:16 【问题描述】:

我知道如何在 XML 和 html 的文本节点中处理空白,但我不确定标签元素本身内部的空白。显然,标签内部使用空格来分隔属性,但是在''之前有空格是否有效?

例如:

<  foo  >
< /foo >

甚至:

<foo>
< /  foo >

这些标签是有效的 XML 吗?假设它们是实际的 HTML 标记名称,那么 HTML 呢?

【问题讨论】:

【参考方案1】:

specification (section 3.1 Start-tags, end-tags, and empty-element tags) 表示'&lt;' 和标签名称之间、'&lt;/' 和标签名称之间或 '/&gt;' 内部没有空格。不过,您可以在标签名称后添加空格:

<foo            >
</foo        >
<bar
/>

【讨论】:

然后将长 HTML 标签分成单独的行是否有效?例如:&lt;a heref="/something/" (newline, indent) title="something"&gt; (newline) &lt;/a&gt;——例如在长标签的情况下,里面包含php代码,使其更具可读性。 @fakaff:是的,这是有效的。换行符、制表符和空格都是空白字符,您可以在标签名称之后和属性之间(甚至在属性中的= 周围)有任意多的空白。【参考方案2】:

&lt;//&gt; 是标记,因此两个字符之间的空格将是语法错误。和Guffa pointed out 一样,开始标记和名称之间不允许有空格。但是您可以在元素标记和结束 &gt;(或 /&gt;) 标记之间添加空格。

EDIT 以反映 Guffa 对 XML 规范的正确引用。

【讨论】:

【参考方案3】:

HTML[5] 标准似乎与 Guffa 所描述的 XML 标准完全一致...

http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html#start-tags

【讨论】:

【参考方案4】:

您不能以空格开头,但可以(可选)以一个结尾(在第二个尖括号之前,即关闭第一个标签)。

【讨论】:

这个答案对现有答案没有任何增加。 @Pyves 你的评论也没有;)

以上是关于XML/HTML 标记内的空白的主要内容,如果未能解决你的问题,请参考以下文章

为啥word空白页删不掉?

片段内的LinearLayout总是在顶部留下空白

修剪列内的额外空白

更改 WKWebview 框架高度后如何删除 WKScrollView 内的空白区域?

Chrome 设备模式下 Google 地图标记图标周围的空白区域

white-space——处理元素内的空白