XML的语法
XML的語法規(guī)則既簡單又嚴(yán)格,非常容易學(xué)習(xí)和使用。
正因?yàn)槿绱?#xff0c;編寫讀取和操作XML的軟件也是相對(duì)容易的事情。
一個(gè)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標(biāo)準(zhǔn)的版本,在這個(gè)例子里是1.0版本的標(biāo)準(zhǔn),使用的是ISO-8859-1 (Latin-1/West European)字符集。
文檔的第2行是根元素(就象是說“這篇文檔是一個(gè)便條”):
| <note> |
文檔的第3--6行描述了根元素的四個(gè)子節(jié)點(diǎn)(to, from, heading,和 body):
| <to>Lin</to> <from>Ordm</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> |
文檔的最后一行是根元素的結(jié)束:
| </note> |
你能從這個(gè)文檔中看出這是Ordm給Lin留的便條么?難道能不承認(rèn)XML是一種美麗的自描述語言么?
所有的XML文檔必須有一個(gè)結(jié)束標(biāo)記
在XML文檔中, 忽略結(jié)束標(biāo)記是不符合規(guī)定的。
在HTML文檔中,一些元素可以是沒有結(jié)束標(biāo)記的。下面的代碼在HTML中是完全合法的:
| <p>This is a paragraph <p>This is another paragraph |
但是在XML文檔中必須要有結(jié)束標(biāo)記,象下面的例子一樣:
| <p>This is a paragraph</p> <p>This is another paragraph</p>? |
注意: 你可能已經(jīng)注意到了,上面例子中的第一行并沒有結(jié)束標(biāo)記。這不是一個(gè)錯(cuò)誤。因?yàn)閄ML聲明并不是XML文檔的一部分,他不是XML元素,也就不應(yīng)該有結(jié)束標(biāo)記。
XML標(biāo)記都是大小寫敏感的
這與HTML不一樣, XML標(biāo)記是大小寫敏感的。
在XML中, 標(biāo)記<Letter>與標(biāo)記<letter>是兩個(gè)不同的標(biāo)記。
因此在XML文檔中開始標(biāo)記和結(jié)束標(biāo)記的大小寫必須保持一致。
| <Message>This is incorrect</message> //錯(cuò)誤的 <message>This is correct</message> //正確的 |
所有的XML元素必須合理包含
在XML中不允許不正確的嵌套包含。
在HTML中,允許有一些不正確的包含,例如下面的代碼可以被瀏覽器解析:
| <b><i>This text is bold and italic</b></i> |
在XML中所有元素必須正確的嵌套包含,上面的代碼應(yīng)該這樣寫:
| <b><i>This text is bold and italic</i></b> |
所有的XML文檔必須有一個(gè)根元素
XML文檔中的第一個(gè)元素就是根元素。
所有XML文檔都必須包含一個(gè)單獨(dú)的標(biāo)記來定義,所有其他元素的都必須成對(duì)的在根元素中嵌套。XML文檔有且只能有一個(gè)根元素。
所有的元素都可以有子元素,子元素必須正確的嵌套在父元素中,下面的代碼可以形象的說明:
| <root> <child> <subchild>.....</subchild> </child> </root> |
屬性值必須使用引號(hào)""
在XML中,元素的屬性值沒有引號(hào)引著是不符合規(guī)定的。
如同HTML一樣,XML元素同樣也可以擁有屬性。XML元素的屬性以名字/值成對(duì)的出現(xiàn)。XML語法規(guī)范要求XML元素屬性值必須用引號(hào)引著。請看下面的兩個(gè)例子,第一個(gè)是錯(cuò)誤的,第二個(gè)是正確的。
| <?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> |
第一個(gè)文檔的錯(cuò)誤之處是屬性值沒有用引號(hào)引著。
正確的寫法是: date="12/11/99". 不正確的寫法: date=12/11/99.
使用XML,空白將被保留
在XML文檔中,空白部分不會(huì)被解析器自動(dòng)刪除。
這一點(diǎn)與HTML是不同的。在HTML中,這樣的一句話:
"Hello????????????? my name is Ordm"將會(huì)被顯示成:“Hello my name is Ordm”,
因?yàn)镠TML解析器會(huì)自動(dòng)把句子中的空白部分去掉。
使用XML, CR / LF 被轉(zhuǎn)換為 LF
使用 XML, 新行總是被標(biāo)識(shí)為 LF(Line Feed,換行)。
你知道打字機(jī)是什么么?呵呵,打字機(jī)是在上個(gè)世紀(jì)里使用的一種專門打字的機(jī)器。^&^
當(dāng)你用打字機(jī)敲完一行字后,你通常不得不再把打字頭移動(dòng)到紙的左端。
在Windows應(yīng)用程序中,文本中的新行通常標(biāo)識(shí)為 CR LF (carriage return, line feed,回車,換行)。在Unix應(yīng)用程序中,新行通常標(biāo)識(shí)為 LF。還有一些應(yīng)用程序只使用CR來表示一個(gè)新行。
XML中的注釋
在XML中注釋的語法基本上和HTML中的一樣。
<!-- 這是一個(gè)注釋 -->
XML并沒有什么特別的哦
XML確實(shí)沒有什么特別的地方。他只是一些用尖括號(hào)擴(kuò)在一起的普通的純文本。
編輯普通文本的軟件也可以編輯XML文檔。
然而在一個(gè)支持XML的應(yīng)用程序中,XML標(biāo)記往往對(duì)應(yīng)著特殊的操作,有些標(biāo)記可能是可見的,而有些標(biāo)記則可能不會(huì)顯示出來,而不會(huì)有什么特殊的操作。
?
XML的優(yōu)點(diǎn)
XML作為一種數(shù)據(jù)格式有更多的優(yōu)點(diǎn)[5]:u
開放性
XML得以成功的主要因素之一就是他的基于規(guī)范和標(biāo)準(zhǔn)的開放性。XML技術(shù)根據(jù)標(biāo)準(zhǔn)規(guī)范,允許在任何平臺(tái)上讀取和處理數(shù)據(jù)。更重要的是XML允許通過HTTP和其他傳輸協(xié)議交換XML數(shù)據(jù)。
u
簡單性
XML另外一個(gè)非常重要的優(yōu)點(diǎn)就是他的簡單性。XML文檔只是純文本。這樣XML文檔就可以自由的在兩個(gè)不同的系統(tǒng)之間交換數(shù)據(jù),因?yàn)榛旧先魏蜗到y(tǒng)都提供了對(duì)文本格式的支持。
u
自我描述性
XML可以明確地表示數(shù)據(jù)模型中各個(gè)部分的意義,這就是自我描述性。
只要查看XML文檔就能確定該數(shù)據(jù)的意義。同時(shí),XML文檔的DTD文件提供了對(duì)整個(gè)文檔標(biāo)簽的定義,我們可以通過DTD文檔來檢驗(yàn)XML文檔的有效性。
u
互操作性
XML文檔是純文本的,很容易在系統(tǒng)間傳遞他們。這不僅僅是因?yàn)檫@些
元素簡單,而且因?yàn)?/font>XML更容易在應(yīng)用程序間遷移。不同的環(huán)境和操作系統(tǒng)可以互相通信,這對(duì)于混合了新舊系統(tǒng)的業(yè)務(wù)來說特別有用。
u
結(jié)構(gòu)和內(nèi)容分離
在復(fù)雜的應(yīng)用系統(tǒng)中,XML有一個(gè)更重要的優(yōu)點(diǎn):在運(yùn)用HTML時(shí),數(shù)據(jù)的顯示和數(shù)據(jù)本身混合在一起,當(dāng)就XML而言,數(shù)據(jù)的顯示和數(shù)據(jù)本身時(shí)區(qū)分開的。這樣我們就可以在不改變數(shù)據(jù)本身內(nèi)容的前提下,自由的改變數(shù)據(jù)的顯示格式。
u
可擴(kuò)展性
可擴(kuò)展性是指,使用XML可以按照自己的需要定制語言。有許多語言都派生自XML,例如:MathML(數(shù)學(xué)標(biāo)記語言)、CML(化學(xué)標(biāo)記語言)和TecML(技術(shù)數(shù)據(jù)標(biāo)記語言),每種語言都用于其特定的環(huán)境。基于上述XML的優(yōu)點(diǎn),CDF框架的所有數(shù)據(jù)都采取了XML的格式,這樣不僅可以在系統(tǒng)的各個(gè)不同模塊之間有了統(tǒng)一的數(shù)據(jù)交換格式,而且也可以使用該系統(tǒng)生成組件,嵌入到其他系統(tǒng)中,從而實(shí)現(xiàn)對(duì)已有系統(tǒng)的擴(kuò)展。另外,使用XML作為表單的描述格式,可以滿足用戶對(duì)表單定制的需求。
總結(jié)
- 上一篇: 基于OWL-S的Web服务质量本体的描述
- 下一篇: 淘宝网登陆时密码输不进去??