XML標(biāo)記語(yǔ)言的基本概念及語(yǔ)法入門(mén)教程
XML 表示可擴(kuò)展標(biāo)記語(yǔ)言。它是一種基于文本的標(biāo)記語(yǔ)言,源自標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言(SGML)。
XML 標(biāo)簽標(biāo)識(shí)數(shù)據(jù)以及用于存儲(chǔ)和組織數(shù)據(jù),而不是指定如何顯示它,像 HTML 一樣用于顯示數(shù)據(jù)。不久的將來(lái) XML 并不會(huì)取代 HTML,但是它通過(guò)采用許多 HTML 中成功的特性引入了可能性。
這里有 XML 的三個(gè)重要特點(diǎn),這使得它對(duì)各種各樣的系統(tǒng)和解決方案都有用:
XML 是可擴(kuò)展:XML 允許我們創(chuàng)建自己的適合應(yīng)用程序的自描述標(biāo)簽或者語(yǔ)言。
XML 承載數(shù)據(jù),但不呈現(xiàn)它:XML 允許我們存儲(chǔ)數(shù)據(jù),不管它會(huì)如何呈現(xiàn)。
XML 是一個(gè)公共標(biāo)準(zhǔn):XML 有叫做萬(wàn)維網(wǎng)聯(lián)盟(W3C)的組織開(kāi)發(fā),并且它可以作為一個(gè)開(kāi)放標(biāo)準(zhǔn)。
XML 的用途
這個(gè) XML 用途的簡(jiǎn)短列表說(shuō)明了一切:
XML 可以在幕后工作以簡(jiǎn)化為大型網(wǎng)站創(chuàng)建 HTML 文檔。
XML 可以用來(lái)在組織和系統(tǒng)之間交換信息。
XML 可以用來(lái)卸載和重新加載數(shù)據(jù)庫(kù)。
XML 可以用來(lái)存儲(chǔ)和整理數(shù)據(jù),還可以自定義數(shù)據(jù)處理需求。
XML 很容易合并樣式表創(chuàng)建幾乎任何想要的輸出。
實(shí)際上,任何類(lèi)型的數(shù)據(jù)都可以被表示為 XML 文檔。
什么是標(biāo)記?
XML 是一種標(biāo)記語(yǔ)言,它定義了一組按照人類(lèi)可讀和機(jī)器可讀的格式編碼文檔的規(guī)則。那么究竟什么是標(biāo)記語(yǔ)言? 標(biāo)記就是添加給文檔以某種方式改善其意義的信息,它標(biāo)識(shí)部分以及彼此之間如何關(guān)聯(lián)。更具體來(lái)說(shuō),標(biāo)記語(yǔ)言就是一組符號(hào),它可以放置到文檔的文本中劃分和標(biāo)記文檔的某些部分。
下面這個(gè)例子展示了嵌入一塊文本的 XML 標(biāo)記看起來(lái)是什么樣子:
- <message>
- <text>Hello, world!</text>
- </message>
這個(gè)片段包含標(biāo)記符號(hào)或者說(shuō)是標(biāo)簽,比如 <message>...</message> 和 <text>... </text>。標(biāo)簽 <message> 和 </message> 表示這個(gè) XML 代碼片段的開(kāi)始和結(jié)束。標(biāo)簽 <text> 和 </text> 包裹著文本 Hello world!。
XML 是編程語(yǔ)言嗎?
一門(mén)用于創(chuàng)建計(jì)算機(jī)程序的編程語(yǔ)言由語(yǔ)法規(guī)則和它自己的詞匯表組成。這些程序指示計(jì)算機(jī)執(zhí)行特定的任務(wù)。XML 并不具備成為一種編程語(yǔ)言的資格,因?yàn)樗粓?zhí)行任何計(jì)算或者算法。它通常存儲(chǔ)在簡(jiǎn)單的文本文件中,并通過(guò)能夠解釋 XML 的特殊軟件處理。
XML 語(yǔ)法
下面是一個(gè)完整的 XML 文檔:
- <?xml version="1.0"?>
- <concat-info>
- <name>Tanmay Patil</name>
- <company>TutorialsPoint</company>
- <phone>(011) 123-4567</phone>
- </concat-info>
你可以注意到上面的例子中有兩種類(lèi)型的信息:
標(biāo)記,比如 <concat-info>。
文本或者字符數(shù)據(jù),比如 _Tutorials Point和(011) 123-4567_。
下圖描述了在 XML 文檔中編寫(xiě)不同類(lèi)型標(biāo)記和文本的語(yǔ)法規(guī)則:
我們來(lái)詳細(xì)看看上圖中的每個(gè)組成部分:
XML 聲明
XML 文檔可以有一個(gè)可選的 XML 聲明。它可以寫(xiě)作如下形式:
<?xml version="1.0" encoding="UTF-8"?>
這里 version 就是 XML 版本,encoding 指定文檔中使用的字符編碼。
XML 聲明的語(yǔ)法規(guī)則
XML 聲明區(qū)分大小寫(xiě),必須以 "<?xml>" 開(kāi)頭,其中 "xml" 是小寫(xiě)的。
如果文檔包含 XML 聲明,那么它必須是 XML 文檔的第一條語(yǔ)句。
XML 聲明必須是 XML 文檔的第一條語(yǔ)句。
可以使用一個(gè) HTTP 協(xié)議覆蓋 XML 聲明中指定的 encoding 的值。
標(biāo)簽和元素
一個(gè) XML 文件的結(jié)構(gòu)由幾個(gè) XML 元素組成,也叫做 XML 節(jié)點(diǎn)或 XML 標(biāo)簽。XML 元素的名稱(chēng)使用尖括號(hào) < > 閉合,如下所示:
<element>
標(biāo)簽和元素的語(yǔ)法規(guī)則
元素語(yǔ)法: 每個(gè) XML 元素都必須閉合或者帶有開(kāi)始和結(jié)束元素,如下所示:
<element>....</element>
或者簡(jiǎn)寫(xiě)形式,就像這樣:
<element/>
元素嵌套: 一個(gè) XML 元素可以包含多個(gè) XML 元素作為它的子元素,但是子元素不能重疊。比如,一個(gè)元素的結(jié)束標(biāo)簽必須與最近匹配的開(kāi)始標(biāo)簽具有相同的名稱(chēng)。
下面的例子展示了不正確的嵌套標(biāo)簽:
- <?xml version="1.0"?>
- <contact-info>
- <company>TutorialsPoint
- <contact-info>
- </company>
下面的例子展示了正確的嵌套標(biāo)簽:
- <?xml version="1.0"?>
- <contact-info>
- <company>TutorialsPoint</company>
- <contact-info>
根元素: 一個(gè) XML 文檔只有一個(gè)根元素。例如,下面是一個(gè)不正確的 XML 文檔,因?yàn)?x 和 y 元素出現(xiàn)在頂層而沒(méi)有一個(gè)根元素:
- <x>...</x>
- <y>...</y>
下面的例子展示了正確形式的 XML 文檔:
<root>
<x>...</x>
<y>...</y>
</root>
區(qū)分大小寫(xiě): XML 元素的名稱(chēng)區(qū)分大小寫(xiě)。這意味著元素的起始和結(jié)束標(biāo)簽大小寫(xiě)必須一樣。
例如 <contact-info> 和 __<Contact-Info> 就不同。
屬性
attribute 使用名/值對(duì)給元素指定一個(gè)屬性(property)。一個(gè) XML 元素可以有一個(gè)或多個(gè)屬性(attributes)。例如:
- <a href="http://www.tutorialspoint.com/">Tutorialspoint!</a>
這里 href 就是屬性名稱(chēng),而 http://www.tutorialspoint.com/ 就是屬性值。
XML 屬性的語(yǔ)法規(guī)則
XML 屬性名區(qū)分大小寫(xiě)(和 HTML 不一樣)。也就是說(shuō) HREF 和 href 會(huì)被認(rèn)為是兩個(gè)不同的 XML 屬性。
在語(yǔ)法中相同的屬性不能有兩個(gè)。下面的例子展示了不正確的語(yǔ)法,因?yàn)閷傩?b 被指定了兩次:
- <a b="x" c="y" b="z">....</a>
屬性名定義不帶引號(hào)標(biāo)記,而屬性值必須顯示在引號(hào)標(biāo)記中。下面的例子演示了不正確的 XML 語(yǔ)法:
- <a b=x>....</a>
在上面的語(yǔ)法中,屬性值沒(méi)有定義在引號(hào)標(biāo)記中。
XML 引用
引用 通常允許我們?cè)?XML 文檔中添加或包含附加的文本。引用始終以符號(hào) "&" 開(kāi)始,這是一個(gè)保留字符,以符號(hào) ";" 結(jié)尾。XML 中有兩種類(lèi)型的引用:
實(shí)體引用: 一個(gè)實(shí)體引用的起始和結(jié)束定界符之間包含一個(gè)名稱(chēng)。比如 &,其中 amp 就是名稱(chēng)。這個(gè) name 通常指向一個(gè)預(yù)定義的文本字符串或標(biāo)記。
字符引用: 這些包含引用比如 A 包含一個(gè) hash 標(biāo)記("#"),后面緊跟一個(gè)數(shù)字。這個(gè)數(shù)字始終指向一個(gè)字符的 Unicode 碼。在這里,65 指向字母 "A"。
XML 文本
XML 元素和 XML 屬性的名稱(chēng)區(qū)分大小寫(xiě)。這意味著元素的開(kāi)始和結(jié)束標(biāo)簽大小寫(xiě)必須一致。
為了避免字符編碼的問(wèn)題,所有的 XML 文件都應(yīng)該保存為 Unicode UTF-8 或者 UTF-16 文件。
空白字符,比如空格,制表符以及 XML 元素和 XML 屬性之間換行符會(huì)被忽略。
有些字符是 XML 語(yǔ)法本身保留的。因此,不能直接使用它們。要使用它們,就要使用一些替代實(shí)體。下面列出了一些:
相關(guān)文章
- 1.區(qū)分大小寫(xiě)。2.屬性值必須加引號(hào)(單引號(hào)、雙引號(hào)都可以),一般情況下建議使用使用雙引號(hào)。2011-08-02
XML入門(mén)教程:XML語(yǔ)法-XML/XSLT-網(wǎng)頁(yè)制作-網(wǎng)頁(yè)教學(xué)網(wǎng)
接著在瀏覽器中打開(kāi)index.xml文檔,則可顯示“Hello World”。上面兩個(gè)文檔都是合法的XML文件,具體的語(yǔ)法規(guī)則下面會(huì)詳細(xì)介紹,上例可先給大家一個(gè)感性的認(rèn)識(shí)。合法的XML文2009-04-02XML教程:通過(guò)一個(gè)例子來(lái)學(xué)習(xí)XML的語(yǔ)法-XML/XSLT-網(wǎng)頁(yè)制作-網(wǎng)頁(yè)教學(xué)網(wǎng)
XML的語(yǔ)法規(guī)則既很簡(jiǎn)單,又很?chē)?yán)格。這些規(guī)則很容易學(xué)習(xí),也很容易使用。 正因?yàn)槿绱?,?chuàng)建可讀取及操作XML的軟件不是一件難事。 一個(gè)XML文檔的例子 XML使用2008-10-17XML 語(yǔ)法-XML/XSLT-網(wǎng)頁(yè)制作-網(wǎng)頁(yè)教學(xué)網(wǎng)
相關(guān)文章:什么是XML? 看一個(gè)簡(jiǎn)單的XML文檔: <?xml version="1.0" encoding="ISO-8859-1"?> <people> <name>yufuzi</2008-10-17

