帳號:
密碼:
最新動態
產業快訊
CTIMES / 文章 /
掌握開啟電子商務之鑰─XML
 

【作者: 李錫展】   2000年02月01日 星期二

瀏覽人次:【7930】

前言

如眾所週知,在電腦相關的產業裡,技術的更新一日千里。在網際網路的範疇裡更是如此,當網際網路的熱潮一波洶湧勝過一波,大家也都陶醉於Internet所帶來的便利與圍繞著它所編織出的無數願景之中時,殊不知另有一波巨大的技術革命正悄悄地在進行,準備在我們進入二十一世紀時將Internet的熱潮推向另一個高峰,同時,在生活週遭各種必須電子化與網路化的進程中,此一技術革命將為我們打造出一條寬闊易行的道路...


說到這裡,便應該請我們的主角登場 ,那就是「可擴展性標註語言」(eXtensible Markup Language)─XML。


那HTML 這種大家所熟知的「Markup Language」,和XML是否有什麼樣的關係呢?是的,它們都是系出同門,HTML與XML都是源自於SGML(Standard Generalized Markup Language);SGML是專為文件交換與處理所訂定的標準,雖然功能強大卻十分複雜,因此並未廣泛被使用。而HTML即是早年一群位於瑞士CERN高能物理研究中心的科學家使用SGML所定義的一個標籤語言,是在內部網路交換研究心得之用。不料無心插柳,因為World Wide Web的急速竄起,HTML便成為WWW上最重要的文件標示語言了。但是由於HTML在設計之初,僅是為了將一些圖形與文字呈現於網路上,再加上一些簡單的連結功能而已,因此時至今日,要應付日益複雜的網路與越來越多的功能要求,HTML 便有些黔驢技窮而力不從心了。


XML閃亮登場

窮則變!SGML太難用,HTML不夠用,執兩用中,於是而有XML的誕生。


XML可以說是SGML的精簡版,它保留了SGML的精華,彌補了HTML之缺陷,又處處為滿足 Internet的需求而設計,充分運用WWW發展以來所蓄積的動量,集天時地利人和於一身,想要不成功也難!


XML與SGML淵源之深,可以由以下的一段歷史見其端倪:話說西元1990年有一群人開始了一個Open Source Project,其目的在使用SGML以定義出一套專供電腦撰寫軟硬體文件或書籍的「文件格式定義」(Document Type Definition--DTD),以利於電腦文件之交換,歷經數年的努力,終於產生了所謂的 DocBook DTD。物換星移,由於在訂定DocBook過程中的歷練,當時參與此一計劃的人員,如Jon Bosak(現於W3C)、Dave Hollander(現於Commerce Net)、Murray Maloney、Eve Maler(現於Arbortext)、Conleth O’Connell、Norm Walsh (O’Rellly)、Terry Allen(現於Commerce One)等等,現在都成為XML運動中雄據一方,各領風騷的重量級人物。(註一)


XML為何方神聖

介紹完了XML的來龍去脈,現在該切入正題,介紹XML的內容、功能、應用與發展方向。限於篇幅,此處僅能做一粗略的介紹,重點側重於XML的精神而非其技術性的細節,但筆者將盡量提供所知的參考文獻以利有興趣的讀者作進一步的研究探討。(註二)


XML的延展性

首先要談的是XML的延展性(eXtensible)。XML提供使用者自行定義標籤(TAG)的能力,所以我們可以用XML去定義像HTML一樣的標示語言(事實上也正有人在將HTML以XML重新定義,稱之為XHTML),所以「各行各業」也都可以使用XML去定義適合於該行業的特殊標示語言以及文件格式,所以你、我、他都可以自己定義自己的標示語言標籤與文件格式。舉例而言,我們大有為的政府可以為我們的身分證資料定義如下的文件格式(您知道嗎?我國行政院已於民國八十八年十二月四日公佈實施「文書及檔案管理電腦化作業規範」作為政府機關公文電子交換作業之標準,其中的公文文件格式便是用XML訂定的,有興趣的讀者不妨至http://www.rdec.gov.tw/doc/edoc下載相關的資料。):



<?xml version="1.0" encoding="Big5" ?>
<中華民國國民身分證>
  <姓名>李小明</姓名>
  <性別>男</性別>
  <出生年  紀年法="民國">84</出生年>
  <出生月>2</出生月>
  <出生日>27</出生日>
  <父親姓名>李大明</父親姓名>
  <母親姓名>吳小美</母親姓名>
  <戶籍地>
     <!-- 這是註解 -->
     <省>台灣</省>
     <縣市>台北市</縣市>
     <鄉鎮市/>
     <鄰>xxx</鄰>
     <里>yyy</里>
     <街路>zzz</街路>
     ...
  </戶籍地>
  <地址>...</地址>
 ...
</中華民國國民身分證>



其中<?xml version=”1.0” encoding=”Big5” ?>是用來宣告該文件是一個XML文件,而每一個起始標籤(<標籤名>)及結束標籤(</標籤名>)所包括的部分稱為一個元素(Element),最外層的元素(只能有一個)稱為「根元素」(Root Element),元素中可有各種「性質」Attribute),如上例中<出生年>元素中便有一個「紀年法」的性質;元素可包含子元素,但元素與元素不可交叉,例如:



<a><b>xxx</a>yyy</b>



便是錯誤的語法;語法合乎XML規範(XML Specification 1.0)的XML文件,我們稱之為Well-Formed Document;除了定義標籤之外,我們也可以定義「文件類型」(稱之為Document Type Definition--DTD),假設我們為身份證定義其DTD,則在「身份證DTD」裡面,我們可以規定「身份證」這種文件類型必須有哪些子元素,每個子元素中又有哪些子元素(或是你要稱之為孫元素)...以及每個元素中有哪些性質等等,一旦DTD定義好了,我們可以把他拿來和XML文件分析比對,如果這個XML文件和DTD相符合,那麼我們說這個XML文件是Valid的文件(當然是相對於該DTD而言);而通常那些用來分析XML文件是否為Well-Formed的程式稱之為Parser,如果一個Parser不僅可以檢視XML文件是否為Well-Formed同時也可以拿XML文件和DTD比對,則我們稱之為Validating Parser。(註三)


以下我們再為現在最熱門的網路商店定義一份訂單的文件格式:



<?xml version="1.0" encoding="Big5" ?>
<玫瑰傳情網路花店訂單>
  <訂單日期>...</訂單日期>
  <訂單號碼>ABCD1234567</訂單號碼>
  <訂貨客戶 客戶代號="">李小明</訂貨客戶>
  <客戶公司寶號>XXX有限公司</客戶公司寶號>
  <訂購產品>
    <貨號>xxx</貨號>
    <品名>紫水晶玫瑰</品名>
    <定價 單位="打" 幣別="新台幣">5000</定價>
    <訂購數量>20</訂購數量>
  </訂購產品>
  <訂購產品>
    <貨號>xxx</貨號>
    <品名>法國香水百合</品名>
    <定價 單位="朵" 幣別="新台幣">200</定價>
    <訂購數量>30</訂購數量>
  </訂購產品>
  ...
  <送貨地址>...</送貨地址>
  <送貨方式>...</送貨方式>
  <貨款總計 幣別="新台幣">50000</貨款總計>
  <繳款方式>...</繳款方式>
  ...
</玫瑰傳情網路花店訂單>



相信以上兩個例子已經足以說明何謂「擴展性」了。這種擴展性帶給給我們的一個顯而易見的好處是,我們可以根據自己的需要,定義最適合自己的標示語言;然而一個較不明顯的絕大好處是,這樣的文件對電腦程式而言是有意義的。比如當一個訂單處理程式接收到上述的訂單文件,它可以根據所讀到的標籤明確的知道文件中資料所代表的意義,因此它可以自動將<訂購數量> 乘上 <定價> 以計算 <貨款總計>,然後依據 <送貨地址> 與 <送貨方式> 所標示的資料,通知貨運單位作適當的處理。


所以 XML 化的文件將「有關資料本身的資料」(我們稱之為 Meta Data),一同隱含於文件本身之中,程式可依據這些資料作邏輯性的判斷,以對資料作自動化處理;當然使用 HTML 中的 FORM,也可以達到類似的效果,但畢竟HTML是設計來作「網頁呈現」的,它對於資料的描述較不精確,要用之於「網頁呈現」之外的其他用途,總是較不方便,況且XML 尚有許多其他優點是 HTML 所不能企及的,以下我們將一一加以論述。


電子商務中文件交換的關鍵角色

XML這樣重要的科技在目前最熱門的電子商務中自然也不能缺席,以往廠商間交易的電子化最主要的技術是EDI(Electronic Data Interchange),然而EDI的規範只適用於小眾的使用廠商間,且需要專屬的線路與軟體,其建置費用高昂,非一般小規模的廠商所能負擔,所以使用並不普遍;相反的,以XML來做文件交換的標準是最適合不過的了,只要將來的瀏覽器一旦支援XML(目前僅IE5.0支援部分XML標準,但新版的Mozilla將有完整的支援,現在最新的版本為Milestone12,請見http://www.mozilla.org),任何人都可以使用Internet + XML + 瀏覽器做到今天EDI所做的任何事,由於網際網路的發達,網路連線的費用幾乎不存在,所以成本將十分低廉。但是即使電子商務有了這些先進的技術的幫助,仍然只能說是萬事具備,只欠東風了!


因為另外一個決定成敗的因素是「電子型錄的互通性」(Interoperable Catalog),還記得我們說XML是eXtensible的,它允許我們自訂標籤與DTD,但是各行各業為其商品所訂定的標籤語言與文件格式仍然要有一個統一的標準,才方便業者間互相溝通與傳輸資料,否則每家業者自訂一套標準,就真是自找麻煩了。所以要以XML推動電子商務,首要的工作便是由每一個行業使用XML來訂定最適合其本業的型錄標準,同時要有配套的Catalog Repository機制作為業者註冊型錄的公證機關;以技術最先進的美國為例,有許多非營利性的組織便一直在推動與建立相關的標準與機制,如CommerceNet(我國之NII亦為其會員,並有CommerceNet Taiwan分會), CommerceOne RosettaNet等等。鑒於Catalog Interoperability 的重要性,美國政府由Federal Electronic Commerce Program Office與Federal Interagency Acquisition Internet Council主持,民間由CommerceNet執行,結合如NASA、General Services Administration(GSA)、Defense Logistics Agency,與許多民間廠商,於1997年開始一項研究「互通性電子型錄」及電子商務之可行性的先導性計畫,此計劃獲得National Institute of Standards and Technology (NIST) Advanced Technology Program (ATP)五百萬美元的資助,經由此計劃,CommenceNet提出了一套eCo frame-work以整合各種不同的市場,同時也定出一套所謂Common Business Language(CBL)的規範。此一eCo/CBL系統可以「偉大」二字形容,eCo 將所有可能的電子商務環境以Networks、Markets、Businesses、Services、Interactions、Documents及 Information Items七個Layer,其間的關係可描述為:


Networks “contain” Markets “where” Businesses “provide and use”Services“which conduct” Interactions“that exchange” Documents(Message Containers) “containing” Information Items


每一個Layer皆訂有一定的Interface與Type Registry的機制,Type Registry定義每一階層中的組成份子的分類,每一分類還可有子分類,如汽車零件Market的Type底下還分為引擎、輪胎、車燈等等,類別可單線繼承而形成簡單的樹狀結構(Simple Tree),每一家公司可選擇要加入哪一個Layer的哪一個Type;透過Interface所規定的method與property,一個公司可將自己的性質、屬性、所提供的service等等資訊post出去以供別人查詢,同時任何人也可透過Interface所提供的機制去query某一家公司的資料,以決定是否要與之交易等等。而這一切都建構在XML的技術之上。(註四)@中標:樹狀結構方便搜尋檢索


仔細的讀者應該可以發現,所有的XML文件都是以樹狀的資料結構存在,我們可以把上面的例子表示如(圖一)。



《圖一 玫瑰傳情網路花店訂單樹狀資料結構圖》
《圖一 玫瑰傳情網路花店訂單樹狀資料結構圖》

樹狀的資料結構十分方便於資料的Indexing與精確而快速地搜尋,因此,今後我們在網路上搜尋有興趣的資料時可以下像以下的搜尋條件:



電腦型式=”筆記型”,製造廠商=”IBM”,CPU=”PII- I500”,記憶體=”256M”,螢幕=”17吋LCD/1280x1024”,價錢<NT30000,...



如此傳回的資料便會十分切合您所想尋找的,不像現在,隨便在網路上搜尋,動輒傳回幾百萬筆資料有找等於沒找。說到樹狀結構,XML處理程式在處理一個XML文件時,必須要有能力能針對文件中的某一個元素作處理,要達到這樣的目的,通常的做法有兩種,一是將XML文件解析成DOM(Document Object Model─一個W3C標準─http://www.w3.org/DOM)的樹狀資料結構,然後再用DOM所規定的一些操作功能(DOM只定義Interface)去操縱每一個節點(Node)上的值(即XML文件中各元素的內容);另一種較簡便的方法是SAX(Simple API for XML),SAX使用Event Driven的方式,例如在每一元素的開始與結尾處可觸發一Event,程式設計者再依據此Event對文件作處理。由於SAX並不會在記憶體中建立一個資料結構所以其所耗的資源較少,較為經濟,但其對於XML文件的操控性相較之下便不如 DOM 的方式了。


文件造型風貌靠Style Sheet

如果仔細檢視一下上述的兩個例子,我們可以發現所定義的標籤都是對於資料本身的描述,而沒有像HTML中盡是一些告訴瀏覽器如何呈現文件內容的標籤,例如<H1>, <H2>, <FONT>, <TABLE>, <B>, <P>, ...等等。沒錯!這正是XML的另一個特點,它只管文件資料本身,至於文件要以何種樣式呈現,則交由所謂的Style Sheet處理(可將Style Sheet想像成照相機所使用的濾鏡),如此做的好處在於同一個XML文件資料,只需改變Style Sheet,就可以完全不同的風貌呈現;比方一個公司的網站,如果在改版時只希望更改其美術設計而不想更動文案內容,則只需設計新的Style Sheet便可達到目的,可謂事半功倍。


現今XML可使用的Style Sheet有CSS(Cascading Style Sheet)與XSL(extensible Style-sheet Language);CSS最初乃為配合HTML所設計,隨著XML的發展CSS也陸續支援XML的應用,CSS 現在已經到了Level3,新增的內容正由W3C審核中。


XSL由於部分內容備受爭議,因此就一分為二,其中較沒問題的一部份稱為XSLT(XSL Transformation),現在已通過成為W3C的標準(Recommendation),XSLT配合另一項W3C的標準XPath(其功能為替XML文件中的各個組成部分定址,以便 Access XML 文件中的元素),將XML文件依照Style Sheet的內容(稱為Template Rule)轉換成另一個XML文件,這種轉換的過程當然是要靠一些工具軟體(XSL Processor)來完成的,IBM的LotusXSL(http://alphaworks.ibm.com/tech/LotusXSL)與James Clark的xt(http://www.jclark.com/xml/xt.html)都是廣受歡迎的免費軟體。


XSLT的作業方式

XSLT的作業方式為當XML資料文件與 Style Sheet(XSLT亦為XML格式)的文件送入XSL Processor處理時,XSL Processor會呼叫XSL Poser來將資料文件與Style Sheet文件解析成樹狀結構,此時稱為Source Tree,然後XSL Processor會根據Style Sheet中的Template Rule所列的Match Pattern到資料文件所形成的Source Tree上去搜尋,一旦找到與Match Pattern相符的元素,便將之擷取出來,依照Template Rule中所指定的格式置入所謂的Result Tree(可以想成輸出成一個XML或HTML檔案)之中,當所有的Template Rule都使用完畢,最後便得到想要的Result Tree。


在W3C的一個Recommendation(http://www.w3.org/1999/06/REC-xml-stylesheet-19990629)中規定連結XML文件與Style Sheet的方式為,欲於XML文件中使用一Style Sheet,須於文件中加入一行StyleSheetPI(Style Sheet Process Instruction),StyleSheetPI定義如下:



StyleSheetPI ::=  '<?xml-stylesheet' (S PseudoAtt)* S? '?>'



其中 “::=” 代表「定義」的意思;單引號所包括的內容為字串;”S” 代表「空白」;”*”表示可為零或多個元件;”?”(非’<?’或’?>’)表示可為零或一個元件。


PseudoAtt 則可定義如下:



href CDATA #REQUIRED
     type CDATA #REQUIRED
     title CDATA #IMPLIED
     media CDATA #IMPLIED
     charset CDATA #IMPLIED
     alternate (yes|no) 烋o*



以上為XML中定義Attribute 的語法,舉例而言 “href”為Attribute的名稱,其型態為”CDATA”,”CDATA”型態表示資料為純粹之字串,XML處理器應保留其原貌而不更動之;”#REQUIRED”表示此Attribute之值必須給定,”#IMPLIED”則表示Attribute之值由應用軟體自行決定,使用者可不給定其值。而(a|b|c|...)則表示Attribute 之值可為 a 或 b 或 c 或...,其後所給定之值為default。在XML與其相關技術標準的文件中盡是像這樣的語法,對於非電腦本科的人士,可能需要一段時間才能適應這種精簡的表達方式。


XML文件使用Style Sheet範例

在上述的標準中也給了幾個在合乎HTML4.0規範的文件中使用Style Sheet,及在XML文件中使用的例子:



<LINK href="mystyle.css" rel="style sheet" type="text/css">
<?xml-stylesheet href="mystyle.css" type="text/css"?>

<LINK href="mystyle.css" title="Compact" rel="stylesheet"type="text/css">
<?xml-stylesheet href="mystyle.css" title="Compact" type="text/css"?>

<LINK href="mystyle.css" title="Medium" rel="alternate stylesheet" type="text/css">
<?xml-stylesheet alternate="yes" href="mystyle.css" title="Medium" type="text/css"?>



Microsoft網站http://msdn.microsoft.com/downloads/c-frame.htm#/downloads/samples/internet/xml/multiple_views/default.asp 上有許多使用XML與XSL的範例,有興趣之讀者不妨一試。


結論

自XML標準訂定以來,相關的應用一日千里,種類繁多不及備載,茲舉數例如下:


MathML--Mathematical Markup Language,主要用來在文件或網頁上呈現數學、科學符號,以及科學用軟體和聲音合成等範疇。請見http://www.w3.org/Math


SMIL--是的!唸作”smile”,SMIL是用來整合與編排各種多媒體如聲音,影像,文字等等媒體,使之呈現如電視般的效果;請見http://www.w3.org/AudioVideo


XML Signature--應用XML於電子簽章之計算與驗證。


Mobile Access--應用XML將無線儀器(Wireless Device)連上網際網路。


總之全世界的大小廠商無不摩拳擦掌,全力投入XML標準的制定與相關應用軟體的研發,唯恐落於人後而是去競爭力。如大家所見,圍繞著XML所衍生出的新技術如此眾多,每一項均是集合許多人的心血而成,大有可觀之處,因此非投入極大之心力難以窺其堂奧。所以筆者所知亦極其有限,然筆者有感於國內多數業界對於XML的認知仍淺,風氣未開,不知落後先進國家凡幾,心中十分著急,所以敢不惴簡陋,野人獻曝一番,疏漏之處在所難免,望此中先進有以指正。此文之目的在拋磚引玉,引發眾人之注意與興趣而已,如能達此,則得魚忘筌可矣!


(作者任職於安際資訊公司)


備註

註一:DocBook的管理與未來走向,現在則移交OASIS掌管,有興趣的讀者可至其網站(http://www.oasis-open.org/docbook)找尋更詳細的資料;而Norm Walsh則為DocBook寫了一本書「DocBook:The Definitive Guide」,其電子檔可免費下載,有興趣的讀者可至http://www.docbook.org一探究竟。至於DocBook沿革歷史的細節,有興趣者,請見http://www.xml.com/pub/1999/10/docbook/docbook-making.html


註二:在此我要向各位讀者推薦蕭百齡(勞虎)先生所著的的『無廢話XML』電子書,該書提供一深入淺出的XML簡介,勞虎先生文筆幽默,對於XML技術之瞭解相當深入,讀者可至其網站 http://2tigers.net/免費下載該書。另外要推薦中研院的XML網站http://www.ascc.net/xml中研院敦聘澳洲籍顧問Rick Jelliffe從事XML之研究並主持CHINESE XML NOW!計劃。Rick對XML極為精通(著有”The XML&SGML Cookbook: Recipes for Structured Information”一書,並提出XML Schematron--http://www.ascc.net/xml/resource/schematron/schematron.html,並獲得相當高之評價),且為人熱心,為我方對W3C建言之窗口,若對XML中之中文支援部分有任何建議或問題,相信Rick都將非常樂意聆聽與解答。


註三:市面上有許多用各種語言寫成的免費的Parser供人使用,其中使用較廣口碑較佳的有James Clark的C-Expat(http ://www.jclark. com/xml/expat.html) (用C寫的,速度最快)、SUN的Java ProjectX(http://java.sun.com/products/xml)(Java)、IBM的XML4J(http://www.alphaworks.ibm.com/)(Java)(測試結果請見http://www.xml.com/pub/1999/09/conformance/index.html)。有興趣的讀者請至相關網站下載Parser 使用。


註四:詳情請見各相關網站:


http://www.commerce.net/projects/currentprojects/catalog-interoperability


http://eco.commerce.net


http://ec.fed.gov/catalogs.htm


http://www.atp.nist.gov


相關文章
強化轉型核心動力 打造更強數位韌性
數位轉型下的工具機發展趨勢
您的開源軟體安全嗎?
OLED與Mini LED爭逐主流PC顯示技術
企業創新契機 永續經營與數位轉型並行
comments powered by Disqus
相關討論
  相關新聞
» 宜鼎獨創MIPI over Type-C解決方案突破技術侷限,改寫嵌入式相機模組市場樣貌
» 鼎新電腦串連生態系夥伴 數智驅動智慧低碳未來製造
» IBM斥資近70億美元研發AI、量子、半導體
» 鼎新電腦攜手和泰豐田解缺工 以數位勞動力開啟儲運新時代
» Fortinet SASE台灣網路連接點今年落成 全台巡迴落實雲地零信任


刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 遠播資訊股份有限公司版權所有 Powered by O3  v3.20.2048.3.16.81.94
地址:台北數位產業園區(digiBlock Taipei) 103台北市大同區承德路三段287-2號A棟204室
電話 (02)2585-5526 #0 轉接至總機 /  E-Mail: webmaster@ctimes.com.tw