多語種標記,如何
外觀
在計算中,多語種標記是使用多種 標記語言 的有效形式編寫的文件或指令碼,無論標記的解析器或直譯器如何,都能執行相同的輸出。一般來說,多語種標記是兩種或多種語言的子集,可以用作通用的穩健配置檔案。
多語種 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 日。