XML 語法規則

XML 的語法規則很簡單,且很有邏輯。這些規則很容易學習,也很容易使用。

XML 文檔必須有根元素

XML 文檔必須包含一個根元素,該元素是所有其他元素的父元素

<root>
  <child>
    <subchild>.....</subchild>
  </child>
</root>

在此例中,<note> 是根元素:

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>George</to>
  <from>John</from>
  <heading>Reminder</heading>
  <body>Don't forget the meeting!</body>
</note>

XML 序言(XML Prolog)

這一行稱為 XML 序言

<?xml version="1.0" encoding="UTF-8"?>

XML 序言是可選的。如果存在,則必須位于文檔的第一行。

XML 文檔可以包含國際字符,例如挪威語 øæå 或法語 êèé。

為了避免錯誤,您應該指定所使用的編碼,并將 XML 文件保存為 UTF-8。

UTF-8 是 XML 文檔的默認字符編碼。

您可以在我們的字符集教程中進行學習字符編碼。

提示:UTF-8 也是 HTML5、CSS、JavaScript、PHP 和 SQL 的默認編碼。

所有 XML 元素都必須有結束標簽

在 XML 中,省略結束標記是非法的。所有元素都必須有結束標簽:

<p>This is a paragraph.</p>
<br />

注意:XML 序言沒有結束標簽!這不是錯誤。序言不屬于XML本身的組成部分。它不是 XML 元素,也不需要關閉標簽。

XML 標簽區分大小寫

XML 標簽區分大小寫。標簽 <Letter> 與標簽 <letter> 不同。

開始和結束標簽必須使用相同的大小寫:

<message>This is correct</message>

注釋:打開標簽和關閉標簽通常被稱為開始標簽和結束標簽。不論您喜歡哪種術語,它們的概念都是相同的。

XML 元素必須正確嵌套

在 HTML 中,您可能會看到沒有正確嵌套的元素:

<b><i>This text is bold and italic</b></i>

在 XML 中,所有元素必須正確地相互嵌套:

<b><i>This text is bold and italic</i></b>

在上面的例子中,正確嵌套的意思是:由于 <i> 元素是在 <b> 元素內打開的,那么它必須在 <b> 元素內關閉。

XML 屬性值必須加引號

與 HTML 類似,XML 也可擁有屬性(名稱/值對)。

在 XML 中,XML 的屬性值須加引號:

<note date="12/11/2007">
  <to>George</to>
  <from>John</from>
</note>

實體引用

在 XML 中,一些字符擁有特殊的意義。

如果你把字符 "<" 放在 XML 元素中,會發生錯誤,這是因為解析器會把它當作新元素的開始。

這樣會產生 XML 錯誤:

<message>if salary < 1000 then</message>

為了避免這個錯誤,請用實體引用來代替 "<" 字符:

<message>if salary < 1000 then</message>

在 XML 中,有 5 個預定義的實體引用:

&lt; < 小于
&gt; > 大于
&amp; & 和號
&apos; ' 單引號
&quot; " 引號

注釋:在 XML 中,只有字符 "<" 和 "&&quot; 確實是非法的。> 是合法的,但是用 > 來代替它是一個好習慣。

XML 中的注釋

在 XML 中編寫注釋的語法與 HTML 的語法很相似:

<!-- This is a comment -->

注釋中間不允許有兩個破折號:

<!-- This is an invalid -- comment -->

XML 中保留空白

HTML 會把多個連續的空格字符裁減(合并)為一個,在 XML 中,文檔中的空格不會被刪節:

XML:	Hello           George
HTML:	Hello George

XML 將新行存儲為 LF

在 Windows 應用程序中,換行通常以一對字符來存儲:回車符 (CR) 和換行符 (LF)。這對字符與打字機設置新行的動作有相似之處。

Unix 和 Mac OSX 使用 LF。

舊的 Mac 系統使用 CR。

XML 將新行存儲為 LF。

格式良好的 XML

符合上述語法規則的 XML 文檔被稱為“格式良好”的 XML 文檔。