多语种标记,如何
外观
在计算中,多语种标记是使用多种 标记语言 的有效形式编写的文档或脚本,无论标记的解析器或解释器如何,都能执行相同的输出。一般来说,多语种标记是两种或多种语言的子集,可以用作通用的稳健配置文件。
多语种 HTML5 是 HTML,它被编写为符合 HTML 和 XHTML 规范。[1] 多语种文档因此可以被解析为 HTML(它是 SGML-兼容)或 XML,并将以相同的方式生成相同的 DOM 结构。例如,为了使 HTML5 文档满足这些条件,两个要求是它必须具有 HTML5 doctype,并且必须以格式良好的 XHTML 编写。[2] 然后,同一个文档可以作为 HTML 或 XHTML 提供,具体取决于浏览器支持和 MIME 类型。
多语种标记文档的必需元素是 html
、head
、title
和 body
。因此,最基本的多语种标记文档将如下所示:[1]
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<title>The title element must not be empty.</title>
</head>
<body>
</body>
</html>
在多语种标记文档中,非空元素(如 script
、p
、div
)即使为空,也不能自闭合,因为这在 HTML 中无效。[3] 例如,要向页面添加一个空的文本区域,不能使用 <textarea/>
,而必须使用 <textarea></textarea>
代替。
- 不要使用 document.write() 或 document.writeln()。使用 innerHTML 属性代替。
- 不要使用 noscript 元素。
- 不要使用 XML 处理指令 或 XML 声明。
- 使用 UTF-8 编码,并在 W3C 文档中列出的方式之一中声明它。我建议使用 <meta charset="UTF-8"/>。
- 使用可接受的 DOCTYPE,如 <!DOCTYPE html>。不要使用 HTML4 或之前版本的 HTML 的 DOCTYPE 声明。
- 明确声明 "html"、"math" 和 "svg" 元素的 默认命名空间,如 <html xmlns="http://www.w3.org/1999/xhtml">。
- 如果在 XLink 命名空间中使用任何属性,则在 html 元素上声明命名空间,或在使用该属性的外部元素上声明一次。
- 至少使用以下元素(它们不能省略):html、head、title 和 body。
- 每个 tr 元素必须明确地包装在一个 tbody、thead 或 tfoot 元素中,以保持 HTML 和 XML DOM 的一致性。
- 表元素中的每个 col 元素必须明确地包装在一个 colgroup 元素中。
- 使用 元素名称的正确大小写。HTML 和 MathML 元素名称只能使用小写字母,尽管某些 SVG 元素必须仅使用小写字母,而某些必须使用混合大小写。
- 使用 属性名称的正确大小写。HTML 和 MathML 属性名称只能使用小写字母,定义 URL 除外。某些 SVG 属性名称必须仅使用小写字母,而某些必须使用混合大小写。
- 在属性值上保持大小写一致性。一种简单的方法是只使用小写字母,但这并不是必需的。
- 只有某些元素可以为空。这些元素必须使用最小化的标记语法,如 <br/>(不允许使用结束标记)。这些空元素中的一些是:area、br、embed、hr、img、input、link 和 meta。
- 如果 HTTP 内容语言标头 指定了恰好一个语言标签,则使用 lang 和 xml:lang 属性在 html 元素上指定语言。
- 不要在 textarea 或 pre 元素内的文本开头使用换行符。
- 所有 属性 值必须用单引号或双引号括起来。
- 不要在属性值内使用 换行符。
- 不要使用 xml:space 或 xml:base 属性,除非是在 MathML 和 SVG 等外部内容中。这些属性在作为 text/html 提供的服务的文档中无效。
- 在指定语言时,使用 lang 和 xml:lang 属性。不要在没有另一个属性的情况下使用一个属性,并且两者必须具有相同的值。
- 仅使用以下 命名实体引用:amp、lt、gt、apos、quot。对于其他内容,使用十进制或十六进制值代替命名实体。
- 始终使用 字符引用 表示小于号和与号,除非在 CDATA 部分中使用。
- 尽可能(尽管不是必需的),脚本和样式元素应链接到外部文件,而不是内联包含它们(即使对于非多语种文档,这也是一个很好的建议)。但是,当使用内联内容时,它应该是“安全内容”,不包含任何有问题的“小于”或“与”字符(由于创建了不同的 DOM,因此转义它们不是一种选择)。还建议将内联脚本内容包装在 CDATA 部分中,并使用注释掉的 CDATA 标记(使用
//<![CDATA[
作为脚本前的第一行,并将//]]>
作为最后一行,使用 "//" 来注释掉 CDATA 标记)。但是,同样地,您可以通过使用外部文件而不是内联内容来避免这些问题。
- ↑ a b 多语种标记:与 HTML 兼容的 XHTML 文档,W3C 工作草案 2011 年 4 月 5 日
- ↑ WhatWG 博客 - 简述 XHTML5,2010 年 7 月 25 日
- ↑ 多语种标记:与 HTML 兼容的 XHTML 文档:6.4 空元素。W3C 编辑草案 2012 年 7 月 9 日。