XML文档对象模型手册

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

XML对象模型------------------------------------------------------------来源:节选自实战XML第二版(ScriptXML):AppendixAXML对象模型这个附录将详细地探究XML对象模型,包括组成模型的对象、它们的属性与方法,和他们如何被应用在应用程序中。对象模型结构对象是一种树状结构的组织。树的主干便是Document对象,其它的对象便由此对象分支而来。XML对象模型由四种基本的对象所组成:.document对象-XML数据来源.node对象-一个父节点或其中的一个子节点.nodeList对象—兄弟节点的清单.parseError对象—一个无内容的对象,用来接收解析错误的讯息图A-1显示了这些对象间的关系。DOCUMENT|||------------NODE|-------NODE-------|------------NODE||------------NODE||--------------NODE|--------------NODE|--------------NODE|--------------NODE图A-1:XML对象模型在对象模型中的每个对象拥有特定的属性或方法,或两者都有。若使用Script程序代码,内容作者可以直接地使用这些属性和方法来取得信息并运用XML数据。这个附录将完整地介绍XML对象模型,并检视这些对象和相关的属性与方法。既然本书是讨论如何运用XML的,就必须深入了解对象模型的运作。稍后在这附录中,有一些如何在对象模型中使用对象的范例。要使用这些范例,您将需要列在A-1中的文字码,也可以在随书光盘中找到它(Appxa\LastA_1.xml)。?xmlversion=1.0?!DOCTYPEEMAILSYSTEMLstA_2.dtdEMAILPRIORITY=HIGHTOJodie@msn.com/TOFROMBill@msn.com/FROMCCPhilip@msn.com/CCBCCNaomi@msn.com/BCCSUBJECTMydocumentisatree./SUBJECTBODYThisisanexampleofatreestructure./BODY/EMAIL[文字码A-1]您可以从文件类型宣告中看到,这份文件使用了DTD。这份DTD文件如文字码A-2所示,您也可以在随书光盘中的AppxA\LstA_2.dtd找到它。!--ThisisanXMLdocumentthatcouldbeusedasanemailtemplate.--!ELEMENTEMAIL(TO+,FROM,CC*,BCC*,SUBJECT?,BODY?)!ATTLISTEMAILLANGUAGE(Western|Greek|Latin|Universal)WesternENCRYPTEDCDATA#IMPLIEDPRIORITY(NORMAL|LOW|HIGH)NORMAL!ELEMENTTO(#PCDATA)!ELEMENTFROM(#PCDATA)!ELEMENTCC(#PCDATA)!ELEMENTBCC(#PCDATA)!ATTLISTBCCHIDDENCDATA#FIXEDTRUE!ELEMENTSUBJECT(#PCDATA)!ELEMENTBODY(#PCDATA)[文字码A-2]最后,XML文件将透过HTML网页来显示,下面便是HTML的文字码(在随书光盘AppxA\LstA_3.htm中)。!DOCTYPEHTMLPUBLIC_//W3C//DTDHTML3.2Final//ENHTMLHEADSCRIPTLANGUAGE=JavaScrip_FOR=windowEVENT=onloadshowMe();/SCRIPTSCRIPTLANGUAGE=javascriptvarxmlDoc=newActiveXObject(microsoft.xmldom);xmlDoc.load(LstA_1.xml);functionshowMe(){//Insertsamplecodehere.}/SCRIPTTITLECodeListingA-3/TITLE/HEADBODY/BODY/HTML[文字码A-3]请注意在A-3文字码中,showMe函式并没有包含程序代码。因为要插入什么程序代码是由您来决定的,这个程序片段只是要让您了解showMe函式的功用。---------------------------------------------------------------------------------[Note]使用附录中的范例时,您可以在LstA_3.htm的showMe函式中输入片断程序代码,也可以使用随书光盘中AppxA目录中的HTML档案。---------------------------------------------------------------------------------一、Document物件如同前面所提到的,这Document对象代表这份文件的数据来源。这个对象模型允许文件作者使用任何支持XML处理器的浏览器或应用程序,透过script程序代码来加载XML文件。举例来说,一个文件能藉由建立一个ActiveXcontrol的实例,并且呼叫load方法(稍后讨论)来加载文件,如同范例中的HTML码:varxmlDoc=newActiveXObject(microsoft.xmldom);xmlDoc.load(LstA_1.xml);加载也可借着使用Javaapplet来完成,如下所示:SCRIPTxmldso.load(LstA_1.xml);/SCRIPTBODYAPPLETCODE=com.ms.xml.dso.XMLDSO.classWIDTH=100%HEIGHT=0ID=xmldsoMAYSCRIPT=true/APPLET/BODY因为对象模型预期将会使用load方法,因此,程序代码与控件被加载后的程序代码是相同的。重要的是,一旦数据来源被建立后,对象模型便会提供一致的方式来浏览及处理XML资料。---------------------------------------------------------------------------------[Note]Msxml延伸基本的Document对象模型(DOM),来包含XML特定的界面。讨论DOM的概念超出本书的范围。所以,下面的单元只把焦点集中在XMLDOM的一般性使用。---------------------------------------------------------------------------------(一)、Document对象属性以下所列是可用的Document对象属性:1.async2.attributes3.childNodes4.doctype5.documentElement6.firstChild7.implementation8.lastChild9.nextSibling10.nodeName11.nodeType12.nodeValue13.ondataavailable14.onreadystatechange15.ownerDocument16.parentNode17.parseError18.previousSibling19.readyState20.url21.validateOnParse22.xmlasync属性------------------async属性表示是否允许异步的下载。基本语法:boolValue=XMLDocument.async;XMLDocument.async=boolValue;-说明:布尔值是可擦写的(read/write),如果准许异步下载,值为True;反之则为False。使用范例:以下的范例请参照随书光盘的AppxA\LstA_4.htm:xmlDoc.async=false;alert(xmlDoc.async);attribute属性-------------------传回目前节点的属性列表。基本语法:objAttributeList=xmlNode.attributes;说明:传回一个物件。如果此节点不能包含属性,则传回空值。使用范例:以下的范例请参照随书光盘的AppxA\LstA_5.htm:objAttList=xmlDoc.documentElement.attributes;alert(objAttList);------------------------------------------------------------------------------[Note]例子以[object]为结果传回。这是由于被传回的对象,若不使用其它的对象属性,就不能以文字来表示,在本附录中包含数个这样的例子。尽管很多对象属性本身似乎不是很有用,但您将会在附录中看到如何组合属性和方法得到您要的结果。------------------------------------------------------------------------------childNodes属性-----------------传回一个节点清单,包含该节点所有可用的子节点。基本语法:objNodeList=node.childNodes;说明:传回一个物件。假如这节点没有子节点,传回null。使用范例:以下的例子请参照随书光盘中的AppxA\LstA_6.htm:objNodeList=xmlDoc.childNodes;alert(objNodeList);doctype属性-----------------传回文件型态节点,包含目前文件的DTD。这节点是一般的文件型态宣告,例如,节点!DOCTYPEEMAILSYSTEMLstA_2.dtd,名为EMAIL的节点物件会被传回。基本语法:objDocType=xmlDocument.doctype;说明:传回一个对象,这个属性是只读的。假如这文件不包含DTD,会传回null。使用范例:以下的例子请参照随书光盘AppxA\LstA_7.htm:objDocType=xmlDoc.doctype;alert(objDocType.nodeName);documentElement属性确认XML文件的根(Root)节点。----------------------------基本语法:objDoc=xmlDocument.documentElement;说明:回一个在单一根文件元素中包含数据的对象。此属性可读/写,如果文件中不包含根节点,将传回null。使用范例:以下的范例请参照随书光盘中的AppxA\LstA_8.htm:objDocRoot=xmlDoc.documentElement;alert(objDocRoot);firstChild属性-----------------确认在目前节点中的第一个子元素。基本语法:objFirstChild=xmlDocNode.firstChild;说明:此属性只读且会传回一对象,如果节点中没有包含第一个子元素,将传回null。使用范例:以下的范例请参照随书光盘中的AppxA\LstA_9.htm:objFirstChild=xmlDoc.documentElement.firstChild;alert(objFirstChild);implementation属性---------------------DOM应用程序能使用其它实作中的对象。implementation属性确认目前XML文件的DOMimplementation对象

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功