XML與SGML、Html的關系。
SGML、HTML是XML的先驅。SGML是指“通用標識語言標准”(Standard Generalized Markup Language), 它是國際上定義電子文件結構和內容描述的標准,是一種非常復雜的文檔的結構,主要用於大量高度結構化數據的防衛區和其他各種工業領域,利於分類和索引。同XML相比,定義的功能很強大,缺點是它不適用於Web數據描述,而且SGML軟件價格非常價格昂貴。 Html相信大家都比較熟悉,即“HyperText Markup Language” (超文本標識語言),它的優點是比較適合web 頁面的開發。但它有一個缺點是標記相對少,只有固定的標記集如<p>.<strong>等。缺少sgml 的柔性和適應性。不能支持特定領域的標記語言,如對數學、化學、音樂等領域的表示支持較少。舉個例子來說,開發者很難在web pape 上表示數學公式、化學分子式和樂譜。
Xml 結合了sgml 和html的優點並消除其缺點。Xml 仍然被認為是一種sgml語言。比sgml要簡單,但能實現sgml的大部分的功能。1996年的夏天,Sun Microssystem的John Bosak開始開發W3C SGML工作組(現在稱為XML工作組)。他們的目標是創建一種sgml,使其在Web中,既能利用Sgml的長處,又保留Html的簡單性。現在目標基本達到。
二、XML 的發展。
在專業領域中,出現了Web標記語言的許多項目,著名的有CML—化學標記語言,由Peter Murray_Rust 開發,同時開發了第一個通用xml 浏覽器Jumbo . 在數學方面,包括IBM公司再內都在致力開發MathML 1997年四月,出版了xll的第一個版本。當xll完整實現時,將比html 和當前浏覽器所達到的鏈接水平更復雜,更強大。1997年8月,Microsoft公司和Inso公司引入xsl.由於XML是純結構和語義的,需要描述單個元素格式方法。可以使用html的CSS;另一種方案是xsl. 1998年1月,microsoft 公司出版發行了msxsl程序。可以利用xsl表和XML文檔創建能被IE4 識別的Html頁面。1998年2月,W3C發布了xml1.0的正式版本。最近一年多來,由於網絡應用的飛速發展,xml的發展非常迅猛。出現了DOM(Document Object Model),XSLT(XSL Transformation)等新名詞,xml的應用軟件也有了飛速的發展,Microsoft、IBM、Breeze、Stilo等公司紛紛推出了自己的或解析器,或開發平台。在MicrosoftIBM、HP等大公司的推動下,目前有兩個著名的XML的研究組織,分別是biztalk.com和oasis.org,由他們向W3C提出標准的建議。其中biztalk是有Microsoft牽頭組織的,有趣的是Microsoft公司同時參加了oaisis,不過不同於IBM、HP等著名大公司,他的年費只交10萬美元,用Microsoft發言人的話就是“一切視oasis的發展而定!”,言下之意就是如果oasis制定的標准抵觸Microsoft的應用,一場標准大戰不可避免。
什麼是XML首先XML是一種元標記語言,所謂“元標記”就是開發者可以根據自己的需要定義自己的標記,比如開發者可以定義如下標記<book> <name>,任何滿足xml命名規則的名稱都可以標記,這就為不同的應用程序打開了的大門。HTML是一種預定義標記語言,它只認識諸如<html>,<p>等已經定義的標記,對於用戶自己定義的標記是不認識的。 第二XML是一種語義/結構化語言。它描述了文檔的結構和語義。舉個例子,在和Html中,要描述一本書,可以如下表示:<dt> book name <dd> author_name <ul> <li>publisher_name ;;;; <li>isbn_number <ul> 在xml中,同樣的數據表示為 <book> <title>book name</title> <author>author name</author) <publisher> publisher name</publisher> <isbn>isbn_number</isbn> </book> 從上面的對比,可以看出,xml的文檔是有明確語義並且是結構化的。 XML是一種通用的數據格式從低級的角度看,XML是一種簡單的數據格式,是純100%的ASCII文本,而ASCII的抗破壞能力是很強的。不象壓縮數據和Java對象,只要破壞一個數據文件數據就不可閱讀。 從高級的角度看,是一種自描述語言。
XML可利用於數據交換 主要是因為XML表示的信息獨立於平台的,這裡的平台即可以理解為不同的應用程序也可以理解為不同的操作系統;它描述了一種規范,利用它Microsoft的Word文檔可以和Adobe 的Acrobat交換信息,可以和數據庫交換信息。XML表示的結構化數據。
對於大型復雜的文檔,XML 是一種理想語言,不僅允許指定文檔中的詞匯,還允許指定元素之間的關系。比如可以規定一個author元素必須有一個name子元素。可以規定企業的業務必須有包括什麼子業務。
XML文檔。 XML文檔有DTD和XML文本組成,所謂DTD(Document Type Definition ),簡單的說就是一組標記符的語法規則。,表明XML文本是怎麼樣組織的,比如DTD可以表示一個<book>必須有一個子標記<author>, 可以有或者沒有子標記<pages> 等等。當然一個簡單的XML文本可以沒有DTD.下面是一個簡單的xml文本。 <? Xml version=“1.0” standalone=“yes”> <book> haha </book> 其中以?開始並結尾的是進程說明。Standalone表示外圍設備。這裡外圍設備可以理解為該XML文本沒有應用其他的文件。因為XML文件可以外部應用DTD等外部數據。
XML 涉及的一些技術。
XSL和CSS.通過前面的介紹可以知道,XML可以定義信息的內容,卻沒有定義信息該如何表達,這實際上就是XML的長處,它把內容和形式分離了,這樣同一個內容可以有不同的表達,相信隨著XML應用的提高,那種“建議你使用800x600分辨率”的會消失。而XML內容的表達就是通過XSL(XML Style Language)和CSS(Cascading Style Sheets 層疊樣式表)來實現。拿前一個例子來說,可以為該XML文檔定義的樣式表(XSL)如下: <xsl> <rule> <root/> <H1> <children/> </H1> </rule> <xsl> 這就是一個簡單的 XSL文件,利用msxsl可以生成html文件。如下 <h1> haha </hi> 至於CSS,在Html文件中就已經有它的影子了,例如 H1 { font-size: 12pt; font-weight: bold; } 這就是一段簡單的CSS的文本。
XML Schema 盡管DTD給標記的使用加了限制,但是對於XML的自動處理卻還需要更加嚴格更全面的工具。比如DTD不能保證一個標記的某個屬性的值必須不為負值,於是出現了XML Schema,由於XML Schema(不同於DTD)本身也是一個正規的XML文檔,因此開發者可以使用相同的工具處理其同其他的XML的信息交換。最初XML Schema由Microsoft提出,W3C 的專家們經過充分討論和論證,在1999年的2月,發布了一個需求定義,說明Schema必須符合的要求,5月,W3C完成並發布了Schema的定義。目前,IE5中的XML解析器能夠根據文檔類型定義(DTD)或XML Schema解析XML關於DOM DOM即Document Object Model, 它把XML文檔的內容實現為一個對象模型,簡單的說就是應用程序如何訪問XML文檔,W3C的DOM Level 1 定義了如何實現屬性、方法、事件等。
關於XSLT XSLT即XML Stylesheet Language Transformation. 在寫本文時正式標准還沒有正式形成,在1999年的11月通過了《XSLT》。XSLT是一種用來進行XML文檔間相互轉化的語言。簡單的說,我們知道不同的開發者對於各自的應用會用不同的XML文檔,利用XSLT我們可以從一個已經定義的XML文檔抽取我們需要的數據,組成不同的形式,可以是XML, HTML和各種不同的SCRIPT.關於XPointer和Xlinks類似於HTML中的Hyper Link. Xpointer 和Xlink用於聯結其他的XML文檔和其他XML文檔中的部分,其中Xpointer相當於HTML中用於定位HTML文檔子內容的錨!不過其聯結水平更強大。比如,在bookstore中,可以定位到有一個作者叫金庸,書中有四大惡人的那本書,在Html中,這是不可能實現的。
當然,XML的發展促使了許多的新技術的出現,其他的還有RDF、Xfrom等等,其中的大部分W3C只是給出了建議,還沒有形成正式的標准,有些內容甚至還處於討論階段。我們將密切注視著方面內容的變化。
XML 框架所謂框架即Framework.XML是一個通用的標准。它不屬於個人,認證它的也不是一家公司,而是W3C.那麼為什麼那麼多的大公司紛紛趨指如鹜呢?各家公司互相競爭的是它的framework, 是它的Schema. XML framework是駕馭XML文件的結構,是一種高層次的結構控制。利用XML framework,可以把商業邏輯(business logic)分離出來,實現數據與計算的分離。目前著名的framework有Microsoft的Biztalk 以及聯合國(UN/CEFACT)和OASIS聯合於99年底推出了EBXML動議。相信在不久的將來會有許多的Framwork. 其中的一個問題就是在W3C中關於XML的很多東西還處於建議的時候,就推出framework,是不是一種冒險。不過,互聯網的發展似乎就是這樣,關於framwwork的發展,我們將拭目以待。