账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
掌握开启电子商务之钥─XML
 

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

浏览人次:【7884】

前言

如众所周知,在计算机相关的产业里,技术的更新一日千里。在因特网的范畴里更是如此,当因特网的热潮一波汹涌胜过一波,大家也都陶醉于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
相关讨论
  相关新闻
» 鼎新电脑携手和泰丰田解缺工 以数位劳动力开启储运新时代
» Fortinet SASE台湾网路连接点今年落成 全台巡??落实云地零信任资安
» IBM力推AI服务平台 助企业顾问提升50%生产力
» Ansys模拟分析解决方案 获现代汽车认证为首选供应商
» SOLIDWORKS公开演示未来AI 率先导入工业设计软体应用


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

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK83TC3L3DISTACUK1
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw