2007年12月12日 星期三

何謂 XML?

XML的前世今生

XML是一種「中介標籤語言」(meta-markup language),可提供描述結構化資料的格式,這將有助於文件內容的宣告,並符合跨平台的搜尋作業,此外,XML也將是新一代網路資料呈現與運作的關 鍵技術,在進一步介紹XML之前,我們還是先來看看,什麼是「標籤語言」吧!

什麼是標籤語言


所 謂「標籤語言」,是由一些特殊字碼(code)或控制標籤(tag)所組成,它們單獨存在時並無任何的意義,而需要特殊的軟體經由一定的規則解讀後,再將 文件輸出到螢幕或印表機...等輸出設備上,所以標籤語言可以使文件更具結構化,這樣的結構化使得應用程式能夠便於管理、解讀與運用文件中的資料,而標籤 語言又可分為「特定標籤語言」與「一般化標籤語言」。

特定標籤語言:

特定標籤語言是針對某種特定軟體或特定用途所制定的,像我們所熟悉的HTML標籤語言,就是為了應用在Web上而制定的標籤語言,其它像微軟的文書處理軟體Word也是藉由標籤語言來顯示文字的字型、大小、粗細或是換行、換頁等文件格式。

通用標籤語言:

通用標籤語言通常只是用來描述文件的內容與結構,而不會去定義如何顯示或運用這些文件的內容,所以並不是為了特定的軟體而制定的,它可以讓許多不同的軟體解 讀文件,至於解讀後的資料要如何運用,就視各種應用程式的需求而定了。也因為通用標籤語言是一種不受限於特定應用或是設備的文件描述方法,所以具有較佳的 可攜帶性,像是已經通過ISO國際標準認可的SGML「標準通用標籤語言」,與其前身GML(Generalized Markup Language),都是我們所說的通用標籤語言。

HTML標籤語言

如 果您曾經製作過網頁,一定對HTML標籤語言非常熟悉,HTML文件必須遵循一定的規則,而這個規則明確的規範文件應該如何被顯示或運用,讓執行處理工作 的應用程式知道在HTML文件中去讀取哪些標籤內容、識別標籤的結構並將結果呈現在瀏覽器中;除了顯示文件格式,HTML也可以在文件中放置外部檔案,像 是音效檔、圖形檔或其它的崁入式的程式;此外,從一個HTML文件連結到另一個HTML文件或檔案的「超連結」的動作,也是藉由標籤來定義的。

在HTML文件中有許多不同的標籤,這些標籤都有它特定的位置與目的,像是標籤定義了文字的字型與大小,標籤則將文字的格式定義為粗體字。

但 是HTML並不完美,它只是一種表達的技術,並不一定能夠描述HTML標籤中所包含資料的意義,舉一個最簡單的例子好了,

Apple

這段程式碼在瀏覽器中有其特定的呈現方式,但是HTML並沒有告訴我們它倒底是什麼,雖然Apple只是一個英文單字, 但它在不同的領域中可能就會有不同的含義,到底是一家電腦公司、一種水果,還是一個姓氏呢?HTML文件無法告訴我們資料本身所代表的含義。

其實大部分的瀏覽器為了提供一些特殊的功能,所以並不會完全依照DTD中的定義來檢視HTML文件,而有其專屬的標籤解析規則,甚至完全不去讀取DTD,也因此造成目前的HTML文件在各家瀏覽器上的相容性不佳,但這樣的情形在我們改用XML後,將能有效的避免。

NOTE:DTD「文件類型定義」(Document Type Definition),提供了所有元素、屬性與實體間的相互關係,能夠詳細地描述文件的結構規則,我們將會在第三章為您作詳細的介紹。

SGML標準通用標籤語言

說到XML就一定要從SGML(Standard Generalized Markup Language)講起,SGML允許你指定文件的結構,並使用DTD「文件類型定義」來指定文件的結構,SGML可以將文件轉換成多種的輸出格式,包括 了純文字、HTML、LaTeX、PostScript...等格式,最重要的是它為所有的文件提供了一致的外觀,以便於管理與維護。

SGML 文件本身包含了三個部份:SGML宣告( SGML Declaration)、DTD文件類型定義和文件標示(Document Instance),其中SGML宣告是用來告訴SGML處理器(SGML Parser)在解讀該份文件時,所要使用的字元集和文件特性,DTD則是用來宣告該份文件的結構與文法參數,而文件標示就是加上標示處理後的文件。

SGML 在現今的社會中已經廣泛被應用,其中最大的理由就是SGML的跨平台特性,以SGML格式所儲存的文件,任何人都可以輕易的解讀,而且不會因為軟體的不同 而出現亂碼。(最常見的情形就是,若將OFFICE 2000的文件拿到OFFICE 97中開啟.....你將會看到一推的亂碼!)

SGML 與HTML最大的不同在於SGML中並沒有定義資料顯示格式的資訊,例如文字的字型、大小與格式,但標籤可以定義出文件的架構,而某些資料內容,像是書 名、作者...等,其實已經是文件結構的一部份了,然後再藉由DTD描述標籤的類型與文件的格式,最後以適當的方式呈現這些資料。

XML可延伸標籤語言

XML 是從SGML推演出來的,SGML其實是一套非常複雜的系統,因為它具有許多的機制,以便提供各種的語法,來解讀、編輯及保存內容龐大複雜且互相連結的技 術文件,而XML則擷取了SGML中文件結構的核心部份,是SGML的一個子集合,其目的是為了擴充在網際網路上的應用,並靡補HTML的不足,讓 SGML也能輕易地在網路上應用,所以XML肩負著使全球資訊網能夠傳輸或處理更豐富資訊的責任,雖然在一般情況之中,HTML或是JAVA的功能就已經 相當足夠了,但隨著資訊的爆炸、資料量的激增與資料結構的複雜化,只用HTML就顯得捉襟見肘了,而JAVA又顯得太大才小用,也不易學習,現在有了 XML與HTML的相輔相成,這些問題就都解決了,所以XML並不是用來取代HTML與SGML,或是廢除原有的標準,XML是用來制定新的標準、用來定 義一種新的標籤語言,其自訂的範圍包括標籤及屬性的名稱,XML文件可以選擇性的包含文法描述的資料,以便應用程式可以檢查其完整性,而使用者可以藉由 XML定義專屬的文件型態,程式設計師也能撰寫出便於管理文件的應用程式。

雖然XML是為了能有效的在Web環境下運作而設計的,但XML也能在Web以外的環境中運作,包括了商業應用、出版業及企業資料交換應用,為了能在不同的環境中應用,因此XML被設計成使用簡單、具有彈性與開放的語言,以便讓不同的使用者製作各種XML文件。




XML程式設計

黃中杰

500

2000/11

知城數位科技



XML將會帶來什麼

XML開發者是一群來自於SGML的設計者和應用者,他們已經在SGML上投入了大量的精力,但卻發現SGML並沒有完全發揮它的作用,而他們有其充分的理由相信,在這些方面XML帶來的影響可以算得上是一場革命。

對EDI的支持

EDI 「電子資料交換」,是網路發展的主要目標之一,而資料結構化的主要目的無非就是要使資料交換更簡單、更方便,不同的領域都應制定該領域的統一模型,就像是 不同的國家有著不同的語言,若不同領域的資料都採用統一的模型,便能夠方便、有效的共享資料,這樣的模型就是DTD「文件類型定義」,雖然DTD正逐漸的 被XML Schema所取代,但是很明顯的,網路將會是一個理想的電子資料集散地,而

在這裏HTML無法完全表示不同領域中所需的模型和它的語義,所以XML就誕生了。


對Java技術的幫助

Java 技術是本世紀最重要的技術發展之一,Java使瀏覽器工作時就像在通用的應用平台上,而平台與平台之間卻是獨立的,但HTML固定的標籤和語義上的貧瘠卻 使得Java的應用受到了極大的限制,這主要是因為資料中的訊息無法統一的緣故,而XML卻能夠完全勝任這份工作,XML和Java技術的整合,可以有效 減少網路應用程式的通訊量,提昇傳輸速度,也同時提高了應用程式本身的效能,我們可以說XML真正使得Java有了用武之地。


電子商務的靈魂

隨 著網際網路的普及,電子商務(e-commerce)的熱潮也愈演愈烈,可是在熱潮的背後卻隱含著一個巨大的危機,那就是龐大的資料交換問題,我們可以想 像的是,並不是每家公司都使用相同的資訊系統,微軟可能使用SQL Server、IBM可能使用DB2、Oracle公司可能使用oracle..等等,就算是使用了相同的資料庫好了,每家公司的資料結構也一定大相徑 庭,而如此龐大的資料交換實在相當的困難。

過去要解決這個問題的方法是使用EDI「電子數據交換」 (Electronic Data Interchange),EDI將資料格式化後經網際網路傳送處理,所以傳統企業所使用的各種單據、票證都可以被網路的資料交換所取代,EDI可以減少 資料處理的費用和資料重複登錄的費用,並大大縮短交易的時間,但在實際執行上卻是舉步維艱,其中最主要的問題是EDI雖然實現了資料的一致性,卻嚴重缺乏 可延伸性,它要求所有的合作夥伴都必須使用唯一的解決方案,這使得EDI的成本過高,而且如果政府提出一個新的稅率方案或者某個商家想增加一些附屬的內 容,整個EDI系統就必須重新修改,這可是牽一髮動全身的浩大工程呀!

但是現在,由於XML優越的可延伸性,讓我們 可以自己定義標籤結構來描述資料,不必拘泥於EDI的框架之中,而且XML是一個簡單的文字文件,加上XSL文件的應用,雙方都不必撰寫繁瑣的資料轉換程 式,只要知道對方的資料結構,就可以在傳送XML文件時同時傳送一套與對方資料結構相對照的XSL文件,這樣對方打開瀏覽器的時候就能看到以自己的格式所 呈現的XML資料了。

沒有留言: