XML的定義

來源:互聯網
上載者:User
xml


     讀者可能會覺得在一本A S P書中講述本章內容不太合適,事實上擴充標記語言( e X t e n s i b l eMarkup Language,X M L )正在越來越深入我們的生活,這是一件好事。X M L可以跨越所有邊界,要獲得真正獨立的、跨平台的資料傳送格式, X M L可能是唯一的選擇。
    這種說法可能會令人感到沮喪,但在電腦業內X M L幾乎得到了所有大型(或小型)開發廠商的認可。標準能達到如此的統一,過去也只有在T C P / I P協議被採納為網路通訊協定的標準時出現過這種現象。X M L是一種國際標準,受一個工業標準團體的控制,得到全世界的廣泛支援,並成為為數不多的只有一個標準的技術之一。
    讀者可能會覺得很奇怪,當今世界各種標準的變化就像季節更替一樣頻繁,即使是單個標準也被多個公司分成數段以追求競爭優勢。然而, X M L卻是個例外,因為它確實獲得了許多公司的廣泛支援。令人驚奇的是所有的人似乎都在努力實現並遵循這種唯一的標準。如果回想一下過去給工業界造成那麼多麻煩的有關標準問題的爭論, X M L就更令人驚奇了。
    既然X M L是一個被普遍實現的標準,因此,在A S P中使用它也很簡單。如果使用A S P建立一個We b網站,那麼很有可能會使用某種形式的資料庫來儲存資料。而X M L是另一種儲存資料的格式,其應用也越來越廣泛,因此必須掌握它。當然X M L的功能不僅於此。
    儘管立刻得到全面支援還不大可能,但我們已經看到X M L支援確實已引入到I E和A D O中。困難在於I E和A D O的發展速度不一致,所以它們之間的互動還不夠理想,故本章沒有介紹人們所希望的有關資料轉送的萬能技術。在寫這本書時, I E和A D O的結合還不是緊密,但它們都在不斷改進。所以儘管現在還沒有新版本發布的具體訊息,但A D O和I E將來肯定會更好地結合。
    在給X M L一個明確的定義之前,最好瞭解什麼是標記語言。首先這裡有一個問題,因為“語言”這個術語用得並不恰當。實際上, X M L並不是程式設計語言,而V B或C + +才是真正的程式設計語言,X M L只是定義了如何標記文本或文檔的一套規則。那麼“標記”又是指什嗎?標記一個文檔是指標識出文檔的某些部分有特殊含義的過程。這可能難以理解,我們舉一個有關超文字標記語言 (HTML)(Hypertext Markup Language,H T M L )的例子,因為“H T M L”中的“M”就代表了標記( M a r k u p )。
    H T M L是一套規定文檔布局的標記。H T M L包含了一些預先定義好的標記,每一種標記都有各自的含義,例如:

    這是一個含有少量標記的文本。文本以< B O D Y >標記開始,在H T M L裡,該標記表示文檔主體的開始,主體部分以< / B O D Y >標記結束。在這個文檔的主體內有標題,放在< H 1 >和< / H 1 >標記之間;另外還有一些粗體文本,放在< B >和< / B >標記之間。這些文本標記為有特殊含義的文本。
    你可能注意到上面的例子沒有使用格式化這個詞。這是經過仔細考慮的,因為標記和格式化並不是一回事。< B O D Y >標記標定的是文檔的一塊地區,並沒有定義任何格式。然而,< B >標記卻標定文檔的這一塊地區用粗體顯示。這是因為H T M L中的< B >標記是隱含了指定格式的標記。
    所以請記住,標記語言只是一種規則,定義了如何給一篇文檔中的特定部分增加特殊含義。這種定義可能會起到很好的格式化作用,但這並不是使用標記的唯一原因。
11.1.1 XML和H T M L的差別
    儘管X M L和H T M L都使用標記,但是它們是不同的。其中最主要的區別是X M L專門用來描述文本的結構,而不是用於描述如何顯示文本。X M L並沒有一套固定的標記,例如:

    上面的代碼看起來與上一節的H T M L代碼不是完全一樣嗎?如果它是H T M L文檔,的確一樣。如果把其載入到瀏覽器,以上內容就會顯示如圖11 - 1所示的結果,其作用好像是格式化文檔。

    但是,如果上面的代碼是X M L文檔,那麼其中的標記就不具有任何含義,其內容只是說明:
    ? 有一個名為B O D Y的標記,在這個標記裡面有一些文本。
    ? 有一個名為H 1的標記,在這個標記裡面有一些文本。
    ? 有一個名為B的標記,在這個標記裡面有一些文本。
    如果以上代碼作為一個X M L文檔(檔案的副檔名為. x m l )載入到I E瀏覽器中,可以看得非常清楚,其結果如圖11 - 2所示。

    I E解釋該X M L文檔並將其顯示出來。請注意, I E並沒對這個X M L文檔做任何處理,僅僅是顯示出來而已。瀏覽器知道如何解釋H T M L文檔,並且知道如何用標記所定義的格式來顯示文檔。同樣,瀏覽器也知道如何解釋X M L文檔,但由於X M L標記不定義格式,所以文檔不會得到格式化,於是原樣顯示這些標記。
    但I E實際上還是做了一點格式編排,使X M L更易讀了。它把標記分為不同的層次,所以我們看到了一套結構化的標記,且I E沒有解釋這些標記。
    迄今為止所學的X M L文檔由標記文檔某些部分的標記組成。那麼X M L使用資料會有什麼問題呢,再看另一個例子。這個例子在前面的章節中出現過,讀者會發現X M L在這裡十分有意義。

    上面的例子中使用了幾對不同的標記。一開始,你可能會認為這些標記一定有其含義。他們都有一個有意義的名稱,定義了A u t h o r的一個列表、單個A u t h o r以及一些與A u t h o r有關的值。在前面的章節中,這些內容出現了多次,當在一個瀏覽器中查看時,我們可以把它格式化成一個表來顯示。但因為這是X M L,X M L中的標記不代表任何意義,如圖11 - 3所示。

    可見,這裡I E沒有對其進行任何處理。所以即使這些標記對我們來說是有意義的,但它們對X M L卻沒有。事實上,這段代碼可以寫成如下形式:

    瀏覽器只是把這些標記原封不動地顯示出來,如圖11 - 4所示。
    標記可以是你所喜歡的任意符號。當然,一開始就給其一個有意義的名字是很直觀的。X M L的可讀性十分強,所以一般使用能描述其內容的標記名字。
    在此,已經看到X M L由一系列能描述文檔各部分的標記組成。在以上使用A u t h o r資訊的例子中,使用X M L來描述資料,使用了代表資料欄位名的標記名。這就是X M L能作為一種資料交換格式的真正含義。它是標準的文本,所以可以很容易地從一台機器傳送到另一台機器。但它並不是一種專用格式,所以任何人都可以讀懂,並且如果標記名取得有意義的話, X M L資料就具有“自我描述”的功能。

11.1.2 標記和元素
    使用了“標記”這個名字來確定某些H T M L的標記,比如< B >或< H 1 >。元素是指利用這些標記而形成的一個整體。例如:

    因此,一個元素由一個開始標記和一個結束標記組成,它們把文本包圍在中間,其中也可以包括其他子項目。這一點很重要,因為這牽涉到一個“形式化的X M L”的概念,其中每一個開始標記都必須有一個對應的結束標記。這一點與HTML 4.0及其以前的版本不同,在那些H T M L版本中,某些標記沒有結束標記(例如< I M G >和< B R > )和< P >標記。
    如果使用X M L來描述資料,有可能在一些域中不包含資料。在這種情況下,標記就為空白。在X M L中有兩種方法可以定義空標記。第一種方法是使用一個開始標記和一個結束標記,但其中沒有內容:

    形式化的X M L的另一層含義是X M L的標記是大小寫敏感的,所以在這種情況下開始標記和結束標記必須一致。這也意味著下面這一行是無效的X M L:

    1. 根標記
    另一個需要知道的術語是根標記。它表示最外層的標記,一個X M L文檔只能有一個根。例如再來看看A u t h o r的例子:

    這裡的根標記是< A u t h o r s >。因為這裡只有一個根標記,故以上表述是合法的。但下面的代碼是錯誤的:


11.1.3 模式和文件類型定義
    我們一開始就聲明了X M L標記實際上不代表任何意義,可以給標記取任何名字,但怎麼才能知道什麼類型的標記在文檔中是允許使用的?因此必須使用文件類型定義( D o c u m e n tType Definition,D T D )或模式( S c h e m a )。模式和D T D的功能幾乎是一樣的,都規定了哪些元素在文檔中可以使用,並可以把一個形式化的X M L文檔轉變為一個有效X M L文檔。也就是說它被正確標記(即有良好形式),並且只包含允許的元素和屬性。
    既用D T D也用模式的原因是因為微軟覺得D T D在有些地方顯得比較笨拙。D T D是一種定義X M L文檔結構的文字檔,但D T D本身並不是X M L,有完全不同的文法規則。這就有點反常,所以在這一點上我們贊成微軟的觀點。如果處理X M L文檔,那麼定義那些文檔的結構也應該是X M L,這就是模式所做的,即模式是D T D的X M L等價物。












相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。