4 XML文法規則
4.1 所有XML元素都須有關閉标簽
在 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元素,也不需要關閉标簽。
4.2 XML标簽對大小寫敏感
XML 元素使用 XML 标簽進行定義。
XML 标簽對大小寫敏感。在 XML 中,标簽 <Letter> 不标簽 <letter> 是不同的。
必須使用相同的大小寫來編寫打開标簽和關閉标簽:
<Message>這是錯誤的。</message>
<message>這是正确的。</message>
注釋:打開标簽和關閉标簽通常被稱為開始标簽和結束标簽。
4.3 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>元素内關閉。
4.4 XML文檔必須有根元素
XML文檔必須有一個元素是所有其他元素的父元素。該元素稱為根元素。
<root>
<child>
<subchild>.....</subchild>
</child>
</root>
4.5 XML的屬性值須加引号
不HTML類似,XML也可擁有屬性(名稱/值的對)。
在XML中,XML的屬性值須加引号。請研究下面的兩個XML文檔。第一個是錯誤的,第二個是正确的:
<note date=08/08/2008>
<to>George</to>
<from>John</from>
</note>
<note date="08/08/2008">
在第一個文檔中的錯誤是note元素中的date屬性沒有加引号。
4.6 實體引用
在XML中,一些字元擁有特殊的意義。
如果你把字元"<"放在XML元素中,會發生錯誤,這是因為解析器會把它當作新元素的開始。
這樣會産生XML錯誤:
<message>if salary < 1000 then</message>
為了避免這個錯誤,請用一個實體引用來代替"<"字元:
<message>if salary &lt; 1000 then</message>
在XML中,有5個預定義的實體引用:
&lt;
<
小于
&gt;
>
大于
&amp;
&
和号
&apos;
'
單引号
&quot;
"
引号
注釋:在XML中,叧有字元"<"和"&"确實是非法的。大亍号是合法的,但是用實體引用來代替它是一個好習慣。
4.7 XML中的注釋
在XML中編寫注釋的文法不HTML的文法很相似:
<!-- This is a comment -->
在XML中,空格會被保留
HTML會把多個連續的空格字元裁減為一個:
HTML: Hello my name is David.
輸出: Hello my name is David.
在XML中,文檔中的空格不會被删節。
4.8 XML以LF存儲換行
在Windows應用程式中,換行通常以一對字元來存儲:回車符(CR)和換行符(LF)。這對字元不打字機設定新行的劢作有相似之處。在Unix應用程式中,新行以LF字元存儲。而Macintosh應用程式使用CR來存儲新行。