XML是由全球資訊網聯盟(World Wild Web Consortium,W3C,網址:www.w3.org)所制定的標示語言規範。W3C發行它自己的規範(specification),通常並不直接稱為標準,因為W3C並不是一個政府組織,不過因為W3C是全球資訊網(World Wide Web)的最主要協定規範者,所以當某一技術規範通過W3C而成為建議時,便可以視為全球資訊網的國際標準。W3C公布相關技術規範的文件分成四種不同的等級:
" 註解(Note):由W3C會員組織提交到W3C的技術規格,尚未成為正式W3C規範之前,W3C會先以「註解」形式發布此一規格,提供各界討論參考。
" 工作草案(Working draft):工作草案代表已經是被W3C考慮中的技術規格,這一階段可以說是成為W3C最終建議的第一階段。
" 候選建議(Candidate recommendation):當某一工作草案被W3C接受後,該規範的技術文件即成為候選建議。
" 建議(Recommendation):當某一候選建議被W3C接受後,該規範即成為W3C建議。之所以會使用「建議」一詞,當然一方面是因為W3C並非官方機構,另一方面W3C並無強制要求所以業者遵循的「手段」,只能透過公開發表,建議各方業者採納使用。
【說明】
Internet與web這兩個名詞常常被混淆,其實這兩個名詞的意義完全不同:
全球資訊網(internet):是網路與網路之間,以TCP/IP協議相互連接,形成單一巨大的網路。簡單的講,internet是以TCP/IP協定網網相連的大網路環境。在這個網路環境上提供許多服務,例如檔案傳輸FTP、網域名稱DNS、郵件送收SMTP與POP3、遠端登入Telnet…等服務。當然,通常簡稱為Web的全球資訊網(World Wild Web)也是internet上的一個服務。只是Web因為功能越來越多,應用越來越廣,所以常常會有internet = web的誤解。
XML 1.0版本於1998年2月10日通過並成為W3C的建議,也就表示XML已經成為全球資訊網確定的標準,您可以在網址http://www.w3.org/TR/REC-xml/取得XML正式的建議書內容。目前XML最新的版本1.1是在2004年2月4日通過成為建議,您可以在網址http://www.w3.org/TR/xml11/取得相關的說明文件。XML 1.1版主要是修正XML一些錯誤(主要是一些使用規則上的問題),並更強化Unicode字碼的支援。整體而言,1.0與1.1差異並不大,所以現有XML文件幾乎都還是標示為1.0的版本。
首先在開始本書正式的章節之前,以下先以精簡的方式快速了解XML主要的一些概念:
1. XML全稱是什麼?
XML是一個縮寫字,其全名為「可延伸標示語言」(eXtensible Markup
Language)。
Extensible中文也有翻譯成「可擴展」、「延伸式」、「延展式」,都是表示XML可延伸擴充的特性,而markup則有翻譯為標示或標記,因國內Markup Language多翻譯為標示語言,且依據國家標準(Chinese National Standards,CNS)採用「可延伸標示語言」一詞,作為本書使用的中文名稱。
2. XML能做什麼?
XML並不是一個程式語言,就像HTML一樣,XML本身並不能獨立做任何事情,XML只是提供了描述、紀錄、處理和發行資訊的標準方法,簡單講就是用來裝載「資料」的文件規範。它有許多強大的應用,例如達成(超越)像HTML在網頁呈現的效果、資料管理與交換的功能、遠端程式呼叫的封裝技術等等,都必須搭配其他相關的延伸技術或是軟體工具。
實際上,XML搭配了相關的技術能做到什麼?這就很難說了,舉個例子,企業整合早期各種不同的資訊系統(legacy system)達成企業資訊整合(Enterprise Application Integration,EAI)核心方法就是利用XML作為訊息交換;異質系統間的遠端程序呼叫(Remote Procedure Call,RPC)在開發上一直都很複雜,無論是DCOM或CORBA元件技術,都有很高的技術門檻或跨平臺問題。但是透過XML封裝訊息的技術,也就是Web Services的「簡易物件存取協定」(Simple Object Access Protocol,SOAP)即可簡化許多開發複雜度,還可使用以XML描述之通用描述、 搜尋及整合(Universal Description, Discovery, and Integration,UDDI)的註冊機制,讓系統自動發現全球各地提供服務的來源;許多的文書處理軟體(包括微軟的Word)核心都已經使用XML來處理資料;新版本的XHTML也是XML,甚至前幾年手機上熱門的WAP也是使用XML所制定的WML實現跨電信系統達成簡訊內容傳遞與解碼的交換需求;當然還有用來發布和聚集網頁內容的Really Simple Syndication(RSS)、政府公開資訊…等,也都是使用XML而實現的應用。
3. XML是否很複雜?
完全不會。不過前面提到XML必須搭配一些延伸的技術才能發揮它的效果,所以要學的不只XML本身,您還需要依據個人所需面對的應用層面,學習搭配這些技術。
4. 什麼是標示語言?
標示(Markup)是在資料或文件上加上的記號,以區隔各種不同資訊的意義。除了文書處理器必須標示文章中文字的段落、字型、大小、縮排等註記的方式;早期在電腦中處理中文字碼的方式,無論是採用Leading byte或Shift-in/shift-out模式,都必須在字碼前加上一控制碼告訴電腦這是中文還是非中文。這些以「特定符號」來提供電腦辨識如何處理資料的方式,就稱為「標示」;而這些「特定符號」在標示語言裡,就稱為「標籤」(Tag)。
5. 所以XML只是另一個標示語言?
如果將XML只視為另一個標示語言是非常嚴重的誤解。大部分的標示語言,包括HTML都是「固定式」的標示語言。也就是說,這些標示語言的標籤是固定的,您只能使用規範所定義的標籤。而XML則沒有定義任何的標籤,它只提供了一個架構的標準,讓使用的人自行或是使用別人定義的標籤,因此彈性、延伸性都比其他「固定式」的標示語言更強大與方便。
6. XML稱為延伸式(Extensible)就只因為可自定標籤?
正確。就如前面所提,XML提供了一個彈性的標準架構,讓使用的人可以自訂所需的標籤來標示資料。不過並不是每個要使用XML都必須自行定義所需的標籤,許多產業界會依據自己產業的特性定義所需的標籤,並作為資料處理上的協定,例如醫療界的HL7、電腦多媒體推播頻道的CDF、財金資訊交換標準OFX、化學界的CML、高科產業供應鏈的RosettaNet、當然也包括手機上傳輸WAP協定的WML,都是依據XML所定義出來的延伸語言(這些定義,有個專有名詞:metadata)。不過XML並不是因為能延伸出這些語言才稱之為「延伸式」,而是因為XML是屬於Meta-language,是一種用來描述其他語言的語言。透過XML自訂標籤的特性,使用者可以自行定義所需的標籤,而這些自訂的標籤配合規範的語意、結構,若成為個別應用領域或產業界之內,彼此間資料處理標準或協定,這就等於是一個新的文件處理規範或新的標示語言,而這一個新的文件處理規範/標示語言即是由XML所延伸而來,所以說XML是描述此一新的文件處理規範/標示語言的上一層語言,也就是為什麼稱XML是一個Meta-language的原因。
【補充】
XML不是唯一的Meta-language。XML與HTML都是由SGML延伸而來,所以SGML是XML與HTML的Meta-language。而HL7、CML、OFX、WML等都是由XML延伸的標示語言,所以XML是它們的Meta-language。不過HTML因為無法自訂標籤,不具延伸特性,所以無法產生新的標示語言,因此不是一個Meta-language。