xml(extensible markup language,可擴(kuò)展標(biāo)記語言),是當(dāng)前最熱門的網(wǎng)絡(luò)技術(shù)之一,被稱為“第二代web語言”、“下一代網(wǎng)絡(luò)應(yīng)用的基石”。自它被提出以來,幾乎得到了業(yè)界所有大公司的支持,絲毫不遜于當(dāng)年html被提出時(shí)的熱度。所以,趁現(xiàn)在xml還未普及的時(shí)候,趕快搶先學(xué)學(xué),以保住將來的飯碗。
html的缺點(diǎn)
談xml,不得不先說說“第一代的web語言”——html。html老矣,已經(jīng)快被淘汰了(夸張了一點(diǎn),不過html 4.0后就沒有了,取而代之的是依據(jù)xml定義的xhtml)。可憐我們這些人,好不容易剛剛能夠湊合著會使用html了,卻又不得不被迫丟棄。為什么呢?html對帶動這些年來www的蓬勃發(fā)展,可謂功不可沒。想要在internet上作點(diǎn)事情,幾乎無html不行。但是html有一個(gè)致命的缺點(diǎn),就是:只適合于人與計(jì)算機(jī)的交流,不適合計(jì)算機(jī)與計(jì)算機(jī)的交流。
大家都知道,html是通過一大堆的標(biāo)記來定義文檔內(nèi)容以什么樣的形式顯現(xiàn)在我們面前,也即,html是一種“顯示描述”語言,它僅僅描述了web瀏覽器應(yīng)該如何在頁面上布置文字、圖形等,并沒有對internet上最重要的東西——信息的本身含義進(jìn)行描述。這些通過html表現(xiàn)出來的文字、圖形內(nèi)容很容易被人理解,而要計(jì)算機(jī)去理解這些標(biāo)記內(nèi)的文字的含義,就很困難了。
舉個(gè)例子來說,我們設(shè)計(jì)一個(gè)程序,它可以自動地到各大網(wǎng)上商場去將最新的價(jià)目抓回來。但問題是,每個(gè)網(wǎng)上商場可能在網(wǎng)頁中寫商品名稱和價(jià)格時(shí),都有他們自己的一套寫法,如:甲用價(jià)格,而乙用價(jià)格,還有更為復(fù)雜的表格。那么我們的程序怎樣才知道,哪種標(biāo)記里面的東西才是要抓的價(jià)格信息呢?再比如:在html里,apple只代表了apple這個(gè)單詞在web瀏覽器里用粗體來表現(xiàn),并沒有指出apple代表什么,是蘋果?是蘋果計(jì)算機(jī)公司?還是其它什么?這造成了html不能揭示文件中信息的含義。
另外,html的另一個(gè)問題就是它的標(biāo)記的集合是固定的,用戶不能增加自己的有意義的標(biāo)記。而且各大瀏覽器的規(guī)格不盡相同,要使我們用html做的網(wǎng)頁能夠被所有瀏覽器正常顯示,我們只能夠使用w3c給我們定義好了的標(biāo)記來創(chuàng)建網(wǎng)頁。
在當(dāng)今的網(wǎng)絡(luò)世界里,隨著電子商務(wù)的蓬勃發(fā)展和基于web的應(yīng)用日益廣泛,大量的信息需要被快速地處理。實(shí)際上,在internet上的大部分信息,在最初都是被存放在結(jié)構(gòu)良好的數(shù)據(jù)庫里面,信息按照它的意義被存放在相應(yīng)的字段里,比如:員工檔案,名稱、性別、部門等。對于“張三”這個(gè)數(shù)據(jù),計(jì)算機(jī)能夠根據(jù)它所存放的位置,知道它代表一個(gè)員工的姓名。但是,一旦這些數(shù)據(jù)被調(diào)出來,經(jīng)過cgi、asp、jsp、php等轉(zhuǎn)換成html后,原本有意義的數(shù)據(jù)就變成了一些無特定含義的html標(biāo)記的組合。用戶必須通過自己的“頭腦”才能解析這些數(shù)據(jù),進(jìn)而“手動”將它們進(jìn)行記錄、處理,顯然處理信息的速度會很慢。如果我們能夠?qū)⒆畛醣4嬖跀?shù)據(jù)庫中的原始結(jié)構(gòu)的數(shù)據(jù)在計(jì)算機(jī)之間傳遞,那么肯定會加快信息處理的速度。顯然利用html辦不到,并且,由于計(jì)算機(jī)體系、操作系統(tǒng)以及所使用的數(shù)據(jù)庫不同,不同的計(jì)算機(jī)之間要想互相理解對方的數(shù)據(jù)庫格式是相當(dāng)困難且非常麻煩的,為了使各種不同的計(jì)算機(jī)之間能夠互相交換信息,似乎html又必不可少。怎樣來解決這個(gè)難題呢?
迎接xml
使用xml可以解決上述的難題。w3c對xml作了如下描述:“xml描述了一類被稱為xml文檔的數(shù)據(jù)對象,并部分描述了處理它們的計(jì)算機(jī)程序的行為。xml是sgml的一個(gè)應(yīng)用實(shí)例或一種受限形式。從結(jié)構(gòu)上說,xml文檔遵從sgml文檔標(biāo)準(zhǔn)。”同html一樣,xml也是一種基于文本的標(biāo)記語言,都是從sgml(standard generalize markup language,標(biāo)準(zhǔn)通用標(biāo)記語言,是一種老的標(biāo)記語言,最初用于出版行業(yè),非常復(fù)雜,依據(jù)sgml開發(fā)的應(yīng)用非常昂貴,只在少數(shù)大公司和政府部門有應(yīng)用)發(fā)展而來的,xml保留了sgml 80%的功能,降低了20%的復(fù)雜程度,這樣使得開發(fā)有關(guān)xml的應(yīng)用變得很便宜,使xml能夠進(jìn)入“尋常百姓家”。
提示:html只適合于人與計(jì)算機(jī)的交流,不適合計(jì)算機(jī)與計(jì)算機(jī)的交流。
xml與html的不同在于:xml可以讓我們根據(jù)我們要表現(xiàn)的文檔,自由地定義標(biāo)記來表現(xiàn)具有實(shí)際意義的文檔內(nèi)容,比如:我們可以定義〈文檔名稱〉〈/文檔名稱〉這樣具有實(shí)際意義的標(biāo)記(可以用中文)。在xml中,我們只需要注意文檔的內(nèi)容,而文檔的表現(xiàn)形式則交給css(層疊樣式表)和xsl(可擴(kuò)展樣式語言)來完成,如果xml文件只用于計(jì)算機(jī)與計(jì)算機(jī)之間交流信息,僅僅需要一個(gè)xml文件即可,如果要將xml文件中的信息以某種形式顯示出來,如通過瀏覽器顯示,則可引用一個(gè)樣式表文件來定義瀏覽器怎樣來顯示xml文件中信息。而且xml不像html那樣具有固定的標(biāo)記集合,它實(shí)際上是一種定義語言的語言,也就是說使用xml的用戶可以定義無窮的標(biāo)記來描述文檔中的任何數(shù)據(jù)元素,突破了html固定標(biāo)記集合的約束,將文檔的內(nèi)容組織成豐富復(fù)雜的完整的信息體系。xml主要有三個(gè)要素:schema(模式)、xsl(extensible stylesheet language可擴(kuò)展樣式語言)和xll(extensible link language可擴(kuò)展鏈接語言)。schema規(guī)定了xml文檔的邏輯結(jié)構(gòu),定義了xml文檔中的元素、元素的屬性以及元素和元素的屬性之間的關(guān)系,它能夠幫助xml的解析器校驗(yàn)xml文檔標(biāo)記是否合法;xsl是用來規(guī)定xml文檔表現(xiàn)形式的語言,同css類似;xll則進(jìn)一步地?cái)U(kuò)展了當(dāng)前web上已有的簡單鏈接。
xml是一種定義語言的語言,現(xiàn)在已經(jīng)有幾個(gè)以xml規(guī)范為主所創(chuàng)建的標(biāo)記語言,如:chemical markup language(cml:定義怎樣描述化學(xué)分子式的結(jié)構(gòu),將它顯示在網(wǎng)頁上)、mathematical markup language(mathml:將復(fù)雜的數(shù)學(xué)公式以網(wǎng)頁的形式顯示在瀏覽器中)、synchronized multimedia integration language(smil:如何將多媒體信息展現(xiàn)在www中)。
xml文件的解析器(一種檢查xml文件是否有結(jié)構(gòu)上的錯(cuò)誤,將xml文件中的標(biāo)記剝離,讀出正確信息的工具)大多數(shù)是使用java語言寫成的,這樣,只要計(jì)算機(jī)支持java虛擬機(jī),都可以支持xml(幾乎所有的計(jì)算機(jī)都支持java虛擬機(jī))。所以,即使是異構(gòu)系統(tǒng),也不用擔(dān)心讀不懂對方的資料,大家都用xml文件作為傳送資料的介質(zhì)即可,因?yàn)橹灰獙Ψ接?jì)算機(jī)上有合適的xml解析器,就可以正確地讀取信息。現(xiàn)在,幾大數(shù)據(jù)庫廠商的數(shù)據(jù)庫產(chǎn)品,如:oracle 8i、informix、ibm db2等都開始支持xml,輸入數(shù)據(jù)庫的數(shù)據(jù)可以輕易地轉(zhuǎn)化為xml,甚至可以直接以xml的形式輸入數(shù)據(jù)。有預(yù)言稱:將來的電子文檔必將是xml的天下。
提示:xml保留了sgml 80%的功能,降低了20%的復(fù)雜程度,這樣使得開發(fā)有關(guān)xml的應(yīng)用變得很便宜,使xml能夠進(jìn)入“尋常百姓家”。
學(xué)習(xí)xml并不困難,因?yàn)閤ml的規(guī)范很簡潔,整個(gè)標(biāo)準(zhǔn)打印出來也只有幾十頁,而且xml的寫法和html類似,都是把標(biāo)記用〈 〉符號括起來。更加方便的是,我們能夠使用中文創(chuàng)建xml標(biāo)記,比如,我們能夠創(chuàng)建〈價(jià)格〉...〈/價(jià)格〉這樣的標(biāo)記,在此標(biāo)記內(nèi)的內(nèi)容,它的含義就是某件東西的價(jià)格。想象一下,如果各大網(wǎng)上商場都用這樣的xml標(biāo)記來說明他們網(wǎng)頁中文字的含義,那么我們就可以一個(gè)自動化的軟件去抓取我們感興趣的東西,比如:我們想了解以下有關(guān)xml書籍的信息,這個(gè)軟件就自動去抓取各個(gè)網(wǎng)頁中〈xml書籍〉...〈/xml書籍〉標(biāo)記內(nèi)的字段,這該是多么方便。
xml具有卓越的性能,它具有四大特點(diǎn):優(yōu)良的數(shù)據(jù)存儲格式、可擴(kuò)展性、高度結(jié)構(gòu)化以及方便的網(wǎng)絡(luò)傳輸。因?yàn)閤ml能針對特定用戶的應(yīng)用定義自己的標(biāo)記,這就使xml能夠在多種行業(yè)的信息交換中一顯身手,根據(jù)不同行業(yè)來提供具有各自特色的解決方案。
新聞熱點(diǎn)
疑難解答
圖片精選