📄 210006.htm
字号:
</account></accountlist></span><span id=Layer12></pre></font></div><p><font size=2 color=#3c3c3c face=arial>XML提供描述资讯的通用方式</span><span id=Layer13></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>XML提供描述资讯的通用方式</span><span id=Layer14></font></p><hr><p><font size=2 color=#3c3c3c face=arial>以此方式展示资讯可能让资讯更为有用。对於使用者或者应用软体而言,这些资讯表示的涵意便了然於心。</span><span id=Layer15></font></p><p><font size=2 color=#3c3c3c face=arial>一份XML文件包含的资讯,以XML定义的标注(Tag)注明</span><span id=Layer16></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>一份XML文件包含的资讯,以XML定义的标注(Tag)注明</span><span id=Layer17></font></p><hr><p><font size=2 color=#3c3c3c face=arial>就这个范例中所展示,XML使用有意义的标注(Tag)来标示资料,如<account>与<customer>。为了要让它能够运作,必需要有定义这些标注是代表哪些特定类别的资讯,以及如何使用它们的方式。另一种达到这个目的的方式便是需要某种文法以定义一组合法的符号和规则来使用这些符号。为了达到这个目的,XML的创建者给予我们建立文件类型定义(Document type definitions,DTDs)。有了DTD,便可以判断是否有一组对应的XML定义资讯。举例来说,前述的帐户资讯符合这个DTD:</span><span id=Layer18></font></p><div style="background-color: #D7D7D7;"><font face=Arial size=3><pre><!DOCTYPE accountlist [<!ELEMENT accountlist (account+)> <!ELEMENT account(customer,number,balance,deposit*, withdrawal*,overdrawn?)> <!ELEMENT customer(#PCDATA)> <!ELEMENT number(#PCDATA)> <!ELEMENT balance(#PCDATA)> <!ELEMENT deposit(#PCDATA)> <!ELEMENT withdrawal(#PCDATA)> <!ELEMENT overdrawn(#PCDATA)>]></span><span id=Layer19></pre></font></div><p><font size=2 color=#3c3c3c face=arial>Document Type Definition定义标注(Tag)与使用这些标注的规则</span><span id=Layer20></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>Document Type Definition定义标注(Tag)与使用这些标注的规则</span><span id=Layer21></font></p><hr><p><font size=2 color=#3c3c3c face=arial>这个简单的文法定义一个accountlist元素,这个元素包含一个或多个account。(这就是「account+」中「+」号的意义所在。)每个account元素都有一个customer、一个account number,一个balance,零个或多个存款记录 (以星号表示),零或多个提领记录,以及零或一个 (以问号表示) 透支指示。这些元素每个都包含符合语法的字元资料(Parsed character data,PCDATA),基本上它代表的含意是指字元资料。如果你回顾前述Gerrit Reitveld的帐户资讯,你会看到它对应到这个定义:它是一个accountlist,描述他的两个帐户(account)。第一个account中包含一个customer、一个account number、一个balance,两个deposit,以及一个withdrawal。第二个帐户也同样包含customer、account number与balance的元素,它们是必要的元素。不过第二个帐户并没有存款记录,一次大金额提款,理所当然地,还有一个帐号透支的指示符号。这是一个很基本的范例,XML所能做的远比这个例子还要来得复杂。不过基本的概念是相当简单的,同时使用一个标准的方式来描述所有类型的资讯是很有用的。</span><span id=Layer22></font></p><p><font size=2 color=#3c3c3c face=arial>拥有透过程式存取这些资讯的标准方式也同样的有用。W3C了解这一点,便建立文件物件模型。(Document Object Model,DOM)标准。DOM定义一组物件类型,每一个物件类型显露一个适当的介面,和一些规则以描述物件相互之间的关系。目的是为了定义一个标准的方式展示XML文件中文字的资讯,转变成记忆体中的资料结构以便更容易地透过软体操控之。举例来说,前述之accountlist文件以相当简单的形式展示成树状结构,如图10-14所示。</span><span id=Layer23></font></p><p><font size=2 color=#3c3c3c face=arial>Document-Object Model定义一组标准的物件,可将XML文件以阶层状的资料结构方式展示</span><span id=Layer24></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>Document-Object Model定义一组标准的物件,可将XML文件以阶层状的资料结构方式展示</span><span id=Layer25></font></p><hr><br><center><a target=_new href=imagesh/10-14.gif><img border=0 src='imagesl/10-14.gif'></a></center></span><span id=Layer26><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b> 图10-14</span><span id=Layer27> </b></font>Document Object Model定义一个标准,将XML资料以阶层状方式展示。</span><span id=Layer28></td></table></font></center><p><font size=2 color=#3c3c3c face=arial>能读取XML文件,然後产生一个阶层状的资料结构以代表文件内含资讯的软体就是所谓的XML解析器(XML parser)。稍後将介绍Windows 2000包含一个XML解析器,你可在很多场合使用它。</span><span id=Layer29></font></p><p><font size=2 color=#3c3c3c face=arial>XML解析器能将一份XML转换成记忆体内的资料结构</span><span id=Layer30></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>XML解析器能将一份XML转换成记忆体内的资料结构</span><span id=Layer31></font></p><hr><font color=#3e72d7 face=arial size=4><b>Windows 2000中的XML</span><span id=Layer32></b></font><p><font size=2 color=#3c3c3c face=arial>Microsoft支援W3C定义的XML标准,不过Microsoft决定加强它的功能。举例来说,Microsoft的XML程式设计师相信DTD太过於简单,较有意义的做法是使用XML来定义文件的语法。因此Windows 2000同样也支援这些尚未成为正式标准的标准,称搭配DTD的XML-Data,它用来描述XML文件的文法称为Scehma而非DTD。</span><span id=Layer33></font></p><p><font size=2 color=#3c3c3c face=arial>Microsoft通常使用Sche-ma术语,而不用DTD</span><span id=Layer34></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>Microsoft通常使用Sche-ma术语,而不用DTD</span><span id=Layer35></font></p><hr><p><font size=2 color=#3c3c3c face=arial>因为在很多情况下它是很有用的,Microsoft提供一个COM元件型式的XML解析器,msxml.dll,这个元件的正式说法称为XMLDOMDocument (虽然通常称之为MSXML)。如图10-15所示,客户端可以建立这个物件的实例,然後指示它读取一份XML文件,并产生DOM型式的树状结构以代表文件中的资讯。</span><span id=Layer36></font></p><p><font size=2 color=#3c3c3c face=arial>MSXML实作了XML解析器</span><span id=Layer37></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>MSXML实作了XML解析器</span><span id=Layer38></font></p><hr><br><center><a target=_new href=imagesh/10-15.gif><img border=0 src='imagesl/10-15.gif'></a></center></span><span id=Layer39><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b> 图10-15</span><span id=Layer40> </b></font>COM元件XMLDOMDocument,也称为MSXML,实作了一个XML解析器。</span><span id=Layer41></td></table></font></center><p><font size=2 color=#3c3c3c face=arial>一旦这个标准确立後,客户端便可以呼叫物件的method,存取它的属性以便浏览这个树状结构的资料,并存取它的资讯。XMLDOMDocument物件提供的method包含:</span><span id=Layer42></font></p><font size=2 color=#3c3c3c face=arial><ul><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> load</span><span id=Layer43> </b></font>从档案中读取一份XML文件。</span><span id=Layer44></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> loadXML</span><span id=Layer45> </b></font>读取一份已存在记忆体中的XML文件。</span><span id=Layer46></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> save</span><span id=Layer47> </b></font>将XML文件储存成一个档案,或储存到其它地方。</span><span id=Layer48></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> hasChildNodes</span><span id=Layer49> </b></font>可用来判断阶层中一个节点(node)之下是否还包含另一个节点。</span><span id=Layer50></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> insertBefore</span><span id=Layer51> </b></font>在阶层中目前参考到的节点之前插入一个新的节点。</span><span id=Layer52></li><br></font></ul></font><p><font size=2 color=#3c3c3c face=arial>MSXML的method与属性可让你巡览阶层状的XML文件</span><span id=Layer53></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>MSXML的method与属性可让你巡览阶层状的XML文件</span><span id=Layer54></font></p><hr><p><font size=2 color=#3c3c3c face=arial>这个物件显露的属性包含:</span><span id=Layer55></font></p><font size=2 color=#3c3c3c face=arial><ul><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> firstChild</span><span id=Layer56> </b></font>参考目前节点的第一个子节点。</span><span id=Layer57></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> lastChild</span><span id=Layer58> </b></font>参考目前节点的最後一个子节点。</span><span id=Layer59></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> nextSibling</span><span id=Layer60> </b></font>参考目前节点的父节点之下的下一个子节点。</span><span id=Layer61></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> parentNode</span><span id=Layer62> </b></font>参考目前节点的父节点。</span><span id=Layer63></li><br></font></ul></font><p><font size=2 color=#3c3c3c face=arial>使用XMLDOMDocument物件所提供的method与属性是很简单的,因此巡览语法合格的XML文件并不困难。不过为何每个人都要这麽做呢?在什麽情况下它是很有用的?举一个例子,回想QwickBank帐户管理ASP应用程式,很有可能在许多不同的情况下将前述XML格式的资料用来表示帐户资讯。符合DTD规范的XML文件可能会应用在银行中不同的应用程式之间,以进行帐户资讯的传送。提供资料一个有意义的档案格式,或供其它的用途使用。若应用程式之间交换资料时,可使用一个标准格式,那麽使用这个格式将资料传送到浏览器所代表的意义非凡。</span><span id=Layer64></font></p><p><font size=2 color=#3c3c3c face=arial>以XML定义的资料可以包在HTML文件中送到浏览器,以<XML>标注识别,称之为XML资料岛(XML island)。客户端可以解析资料岛并存取它的内容。举例来说,假设QwickBank的帐户管理ASP应用程式使用XML定义的资料格式回应顾客对其帐户的查询。取代直接产生HTML的作法,ASP网页可以XML定义的标注将帐户资讯包装起来,内嵌在XML资料岛中然後传送到浏览器。浏览器接收到的网页中也可以包含能使用这个XMLDOMDocument物件的VB-Script程式码,以便解析并接收XML文件,并很聪明地展示给使用者。不再为每种浏览器定义独特的格式,使用QwickBank的标准格式以便交换资讯。运作的过程如图10-16。</span><span id=Layer65></font></p><p><font size=2 color=#3c3c3c face=arial>XML资料岛可让XML定义的资料出现在HTML文件中</span><span id=Layer66></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>XML资料岛可让XML定义的资料出现在HTML文件中</span><span id=Layer67></font></p><hr><br><center><a target=_new href=imagesh/10-16.gif><img border=0 src='imagesl/10-16.gif'></a></center></span><span id=Layer68><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b> 图10-16</span><span id=Layer69> </b></font>一个ASP应用程式可以传送以XML定义的资料到浏览器的XML资料岛中。在Internet Explorer上执行的script可以使用XMLDOMDocument物件来解析并显示这个资讯。</span><span id=Layer70></td></table></font></center><p><font size=2 color=#3c3c3c face=arial>图10-16有一点并未提及:就是ASP网页如何将DBM的资料转换成XML定义的格式。其中一种可能性是ASP网页依赖ADO存取资料,从Recordset中读取帐户资讯,然後插入适当的XML标注。更有趣的是,目前流行的资料库,如Oracle 8i与Microsoft SQL Server 2000,允许将SQL查询的结果转换成XML文件型式传回,让这个过程更容易。</span><span id=Layer71></font></p><p><font size=2 color=#3c3c3c face=arial>这个动作只有在浏览器是Internet Explorer的情况时才可以运作,因为这是唯一能载入并执行COM元件,如XMLDOMDocument的浏览器。</span><span id=Layer72></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b> 附注</b></font><p><font size=2 color=#3c3c3c face=arial>这个动作只有在浏览器是Internet Explorer的情况时才可以运作,因为这是唯一能载入并执行COM元件,如XMLDOMDocument的浏览器。</span><span id=Layer73></font></p><hr><p><font size=2 color=#3c3c3c face=arial>由於DBMS支援的缘故,XML比以Web为基础的应用程式要来得有用许多。虽然这个技术起源於Web,不过XML将会在这个环境中相当的流行。因为这个重要的因素,XML可能也会在其它类型的应用程式之中相当受欢迎。</span><span id=Layer74></font></p><p><font size=2 color=#3c3c3c face=arial>XML的影响才刚开始呢</span><span id=Layer75></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>XML的影响才刚开始呢</span>
</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -