XML的語法規則既簡單又嚴格,非常容易學習和使用。
正因為如此,編寫讀取和操作XML的軟件也是相對容易的事情。
XML文檔使用了自描述的和簡單的語法。
<?XML version="1.0" encoding="ISO-8859-1"?> <note> <to>Lin</to> <from>Ordm</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
文檔的第1行:XML聲明——定義此文檔所遵循的XML標准的版本,在這個例子裡是1.0版本的標准,使用的是ISO-8859-1 (Latin-1/West European)字符集。
文檔的第2行是根元素(就象是說“這篇文檔是一個便條”):
<note>
文檔的第3--6行描述了根元素的四個子節點(to, from, heading,和 body):
<to>Lin</to> <from>Ordm</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body>
文檔的最後一行是根元素的結束:
</note>
你能從這個文檔中看出這是Ordm給Lin留的便條麼?難道能不承認XML是一種美麗的自描述語言麼?
在XML文檔中, 忽略結束標記是不符合規定的。
在HTML文檔中,一些元素可以是沒有結束標記的。下面的代碼在Html中是完全合法的:
<p>This is a paragraph <p>This is another paragraph
但是在XML文檔中必須要有結束標記,象下面的例子一樣:
<p>This is a paragraph</p> <p>This is another paragraph</p>
注意: 你可能已經注意到了,上面例子中的第一行並沒有結束標記。這不是一個錯誤。因為XML聲明並不是XML文檔的一部分,他不是XML元素,也就不應該有結束標記。
這與Html不一樣, XML標記是大小寫敏感的。
在XML中, 標記<Letter>與標記<letter>是兩個不同的標記。
因此在XML文檔中開始標記和結束標記的大小寫必須保持一致。
<Message>This is incorrect</message> //錯誤的 <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>
XML文檔中的第一個元素就是根元素。
所有XML文檔都必須包含一個單獨的標記來定義,所有其他元素的都必須成對的在根元素中嵌套。XML文檔有且只能有一個根元素。
所有的元素都可以有子元素,子元素必須正確的嵌套在父元素中,下面的代碼可以形象的說明:
<root> <child> <subchild>.....</subchild> </child> </root>
在XML中,元素的屬性值沒有引號引著是不符合規定的。
如同Html一樣,XML元素同樣也可以擁有屬性。XML元素的屬性以名字/值成對的出現。XML語法規范要求XML元素屬性值必須用引號引著。請看下面的兩個例子,第一個是錯誤的,第二個是正確的。
<?XML version="1.0" encoding="ISO-8859-1"?> <note date=12/11/99> <to>Lin</to> <from>Ordm</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
<?XML version="1.0" encoding="ISO-8859-1"?> <note date="12/11/99"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
正確的寫法是: date="12/11/99". 不正確的寫法: date=12/11/99.
在XML文檔中,空白部分不會被解析器自動刪除。
這一點與HTML是不同的。在Html中,這樣的一句話:
"Hello my name is Ordm"將會被顯示成:“Hello my name is Ordm”,
因為Html解析器會自動把句子中的空白部分去掉。
使用 XML, 新行總是被標識為 LF(Line Feed,換行)。
你知道打字機是什麼麼?呵呵,打字機是在上個世紀裡使用的一種專門打字的機器。^&^
當你用打字機敲完一行字後,你通常不得不再把打字頭移動到紙的左端。
在Windows應用程序中,文本中的新行通常標識為 CR LF (carriage return, line feed,回車,換行)。在Unix應用程序中,新行通常標識為 LF。還有一些應用程序只使用CR來表示一個新行。
在XML中注釋的語法基本上和Html中的一樣。
<!-- 這是一個注釋 -->
XML確實沒有什麼特別的地方。他只是一些用尖括號擴在一起的普通的純文本。
編輯普通文本的軟件也可以編輯XML文檔。
然而在一個支持XML的應用程序中,XML標記往往對應著特殊的操作,有些標記可能是可見的,而有些標記則可能不會顯示出來,而不會有什麼特殊的操作。