引用
小乔 的 JS?取XML
查看文章
JS?取XML
2008-12-02 09:32
XML的背景
HTML?XML都是由??通用?示?言 (Standard Generalized Markup Language,??SGML) ?展而?的。SGML是一?涵???很?的?言,它可以用??生???料系? (或?用) 的?作方式,?且定?了?料描述及?示??。基本上,HTML是SGML的一??用;但 XML?是SGML的一?子集,其??目的是?了提供一???、可使??最佳化的?料呈?方式,因?使用??方式比直接使用完善但??的SGML要?得容易多了。
XML的衍生?格
XML在???初就有?Web考?在?,而且提供了SGML所?有的好?。??器可以利用XML搭配HTML?做?料的?示?呈?。而?了支援XML在 Web 上的??,目前?有??XML的相??格被制定出?。
其中一??格是「延伸???言」 (eXtensible Linking Language ??XLL),???格描述的是一?超??架?,用?同?支援??的HTML超??及更??的延伸超??,其中後者可以??一??指向多?不同的???源。?然SGML也可以定?超???制,不?在SGML的原始?格中??有提到。
另一??格是「延伸?式?言」 (eXtensible Stylesheet Language ??XSL),???格可以提供?XML?式表架?的支援,?也是SGML?格中?有涵?的部份。?式表允???者建立?式?本 (例如粗?、斜?等) 或?式?合,?XML文件?示?,即可??式?本或?合套用到各?XML元件 (Element)上。
????,XML?有SGML百分之八十的功能,但其??度?只有SGML的百分之二十。基本上,?有一???且通用的?料描述方法是十分有用的。?例??,由於XML?有中立的?料交?格式,因此?多不同?型的系?都可以存取其?料。?例??,就我?所知,很多老?的??系?是用各?不同的格式??存?料的,但是?在已?有一些系???程式,可以?很多?系?可以?取或?出XML格式的?料。所以,在某??系?中用XML?成的?料?案可以?易地?出到其他?系?上、或?表成 Web ??、或?出到其它支援XML的?用程式中。也就是?,XML可以?作是一?中介的?料格式,?原本不相容的系?可以互相交??料。
XML是一??料
如果HTML是?了「?示」??,那?,XML就是?了「描述」??。XML是一?可以??料??化?描述?料的???言,且可以?不同的?用程式所?解。XML最大的威力就是它可以?使用者介面??料分?。我??看一???的XML文件,以?解 XML 是如何?作的:
DHTML_in_Act [email protected]
Basic email
This is an XML-based email.
??例子必?注意的重?是,在文件中??有描述如何?示此份文件。?句??,就是?有包含?式的?? (如粗?、斜?字、?排、字?大小等)。因?XML文件的原始?只是描述有哪些?料,??者可以?易地了解?份文件的?容以及??。
XML 文件也被??「自我描述」 (self-describing) 的文件,因?,每一份 XML文件?都?包含一??料必?遵循的??。而由於每一???都可以重?使用,因此,文件建立者可以很容易地利用相同?? (class) 文件的新版本。
??是出自物件?向的程式?念,在物件?向的程式中,??用於描述一群有相同特性的物件。基於各文件的?容??,?文件建立??,可以提供一?很有用的文件分?方法。
有效的???的XML文件
XML 最有用的??特性是:提供文件??化的能力,及提供?料自我描述的能力。要有???能力,文件中必?要有遵循??化 (structual) ?文法化 (grammatical) 的??。接下?的?小?,???介???XML??:「有效的」 (Valid) 和「??的」 (Well-formed),??者描述了文件如何遵循用?控制XML文件的??化?文法化??。
有效的(Valid)文件
XML文件?理器 (XML processor) 可?制?行XML文件?行文件?的??和?容??。?些??包括??XML?格所要求的部份,以及???文件所特?定?的??。其中,第二???是以「文件型?定?」 (Document Type Definiton,??DTD) 存在。DTD 和 XML文件中真正的?料部份是分?的,DTD 可以直接包含在XML文件?部;也可以?XML?立出?,成?一??立的文件。一?有效的XML文件必??格地遵守?????。本??不???介?如何撰?及使用 DTD文件,因?本?只????且不需DTD的XML例子??明。您可以在任何??的XML?考手?或?站上找到更多撰?DTD文件的??,例如XML in Action?本? (by William J. Pardi,Microsoft Press 1999) 和 www.w3.org/xml (W3C的XML?站)。正如您等一下看到的,XML文件不是非得要有DTD文件才行。
??的 (Well-formed) 文件
??的 (Well-formed) 文件所要遵循的???不如有效文件?格。建立一???的XML文件其?是非常??且直?的。以下列表??列出??化的XML文件主要??。本章稍後也??一些例子。
- 只有一?根元件 (Root Element,或??文件元件Document Element)
- 根元件部份不能出?在文件中其它元件的?容中
- 除了根元件之外,文件中其他元件的?始??束??必??成文件中的同一?巢???。?意思是?,如果?始??放在一?元件的?料?容位置上,?束??也必?放置在同一?元件的?料?容位置。
如果XML文件不遵循?些??,??器??出????息。在 Internet Explorer??器中,可以利用Script?言透?物件模型 (Object Model) ?????。本章稍後也?有???理 (Error handling) 的??介?。
我??看看一?XML文件的例子:
Columbine
Aquilegia canadensis
??文件包含了一?PLANT文件元件 (??Document Element或根元件),而COMMON和BOTANICAL是包含在根元件?部的元件。?了要?述???念,以下一?例子是「非」Well-formed的文件,因?它包含了??根元件:
Columbine
Aquilegia canadensis
元件的巢???可建立父/子元件的??。每?子元件 (非根元件的元件) 都?放置在其父元件之?,就像我?在第五章所??的??物件模型一?。???念我?用下面的例子?展示:
子元件??不能放在其父元件的其它子元件之?。例如,下面?段原始?就是一?非well-formed的XML文件:
同?地,根元件的前後??也都不能放在其任一子元件的?部。下面的原始?也不是一?Well-formed的XML文件:
正如您所看到的,XML文件是非常??化的文件,而且必?遵循?格但??的??,以形成well-formed或valid的文件。????加上特定的????,?生了一?有父子元件??的家族????。
XML和Internet Explorer
截至目前?止,我?只介?了XML的?料特性,而未介?XML的?示方式。接著您一定?有????上的疑?,那就是?如何在??上?示XML?料? Internet Explorer包含了??可以?示XML?料的物件,最常被用到的就是DOMDocument 物件。??物件基本上扮演的是?料本身? Internet Explorer ?料?示功能的中介角色。
???物件在分析一份文件?,它?在???中建立文件?所有元件的????;?提供使用XML文件物件模型 (XML Document Object Model) 的方法,也就是允?存取XML?料的介面。??物件模型??露物件的性?、方法、事件、及包含在?料?中真正的?料部份。??的XML 文件物件模型的性?、方法、?事件,在本章稍後的表格21-1到21-3中可找到??的列表。物件模型可以???者???根到分支的所有????。
程式列表21-1是一???的??,它?XML?料送???中,然後?它?示在?幕上。?21-1 ?示的是??的???果。
Code Listing 21-1
start()
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async=false
xmlDoc.load("email.xml")
function start()
var root=xmlDoc.documentElement
todata.innerText=root.childNodes.item(0).text
fromdata.innerText=root.childNodes.item(1).text
ccdata.innerText=root.childNodes.item(2).text
subjectdata.innerText=root.childNodes.item(3).text
bodydata.innerText=root.childNodes.item(4).text
To:
From:
CC:
Subject:
Body:
程式21-1
? 21-1 一????理XML文件的 HTML??
在中的第一段Script程式?只是一?很??的事件?理器,其作用是在??器?入??後,?行start函式的呼叫。我?等一下?解???函式。注意??本身包含了SPAN??,?些??所定?的?域??是最後XML?料的?示空?。
我?先前有提到,XML?理器扮演的是XML文件?HTML?? (或任何其它?似的?示媒?) 的中?媒介?。我?必?先?XML?理器?入,成???上的一?物件,如此我?才能利用Script?言?之?通。
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async=false
xmlDoc.load("email.xml")
程式?的第一行?入一?DOMDocument物件,然後?它?定???xmlDoc。如此提供使用XML?理器?物件模型的?利。下一行告??理器不要「非同步」(Asychronously) ?入文件,??意思是????等到文件的?料完全下?後再???示??;?定值若改?TRUE,??使?料???的其他部分一起下?,如此一?,就得使用一些?? (通常???ondataavailable或onreadystatechange事件,或readystate性?),??定?料在被使用之前已?入。第三行?是?物件?入本章一?始提到的 email.xml ?? XML 文件。以下是?料????一?始被?入的部份:
DOCUMENT
|---XMLDCL
| |---ATTRIBUTE version "1.0"
+---ELEMENT EMAIL
|---ELEMENT TO
| +---PCDATA "[email protected]"
此????是以文件物件 (Document Object) 作??端,它包含了一?XML宣告。接著是根元件EMAIL,EMAIL元件包含另一?元件,也就是上面???中所?示TO子元件,其值[email protected],?是一?叫做 PCDATA 的XML?料型?。
一旦??被下?,start函式就?被呼叫。??函式其?十分??,其第一行?建立一?????root,?且?定?XML文件的根?? (root node),?我?可以存取XML?料?。下一行程式?利用 innerText 性?,?一段文字?定?ID?todata 的SPAN元件,如此可以?文字被?示,而它使用的文字是?自XML根元件的第一?子元件。利用 root.childNodes.item(0).text?一段程式?,即可存取根元件的第一?子元件,以取得文字?容。
如果您能?解?段程式,您??知道如何使用 XMLDocument 控制???入一份XML文件,且?XML的???中取得?料。?是?理其他XML文件的基?。
?然上面?的文件所要花?的功夫,要比??且可得到相同效果的HTML文件?得多。但是,其?一些使用XML?有的??我?可以?中?解,最大的??是??可以?成一??本?料。上面所建立的HTML??可以?作其它可以事先定?模?的XML?料的?本。?然建立一?HTML文件?需要花一?功夫,但它可重?使用於不同的?容。?例??,XML文件即使被翻?成法?、德?…等其它?言,仍然可以被插入同一?HTML文件中。
除了利用 DOMDocument 物件外,我??可以用其它的方法可以?XML?料?示成??,例如: XML?料?源物件 (Data Source Object)、XSL、和 XSL Pattern。?些技?加入了更多使用XML??料??化和?存?料的好?,您可以在微?SBN Workshop?站和??附?光碟中找到更多相???。在??CD中,要看 XML 的?料,?在XML TOC (XML Table of Contents) 中??任何一?主?即可。若要?考?上版本,可?上MSDN?上?源?站。下面的表格分?列出XML 文件物件模型中的各?性?。
本文?容取自於《??Dynamic HTML?站技?》(Dynamic HTML in Action Second Edition) 第 21 章。 延伸?示?言 (eXtensible Markup Language;XML) 的出?是?了要??HTML的不足,而非取代 HTML。基本上,XML是一?描述??化?料的方法,不?和HTML文件不同的地方在於:XML文件?不包含任何描述文件?如何?示的??,它只包含了有??及描述性的?成?料。XML之所以能?用在各??用上,是因?它只是一??料格式而已。?例??,一?利用XML撰?成的股市??文件,可以用??器???,也可以?入?料??作?料表?,甚至?可直接用文字??器???。??可延展的特性在某?程度上是做得到的,因?在XML文件中,?料的?示方式??有特定的??,且XML文件只是一???化的格式?料而已。本章?先?XML的背景及基本?念?起,然後再探?如何撰?XML文件,以及MS Internet Explorer是如何?XML整合到??上的。另外需要提醒的是,目前 Netscape Navigator ??有像Internet Explorer一?提供?XML的支援。 |
||
性? | ?明 |
async | 回?一?布林值,?定是否允?非同步下?。?允?非同步下??, ?回值?TRUE;若不允???回值?FALSE 。?/?。 |
attributes | ?回包含目前??元件之?性集合物件。若??不能有?性值,?? 回值?null。唯?。 |
childNodes | ?回包含目前??元件之所有子??元件的集合。若目前???有任 何子??,??回值?null。唯?。 |
doctype | ?回一?包含?有DTD的文件型???。若不含DTD,??回值? null。唯?。 |
documentElement | ?回一?包含根元件?料的物件。若?有根元件,??回值?null。 唯?。 |
firstChild | ?回一?包含目前??的第一?子??元件,若目前???有任何第 一子??,??回值?null。唯?。 |
implementation | ?回DOM?目前XML文件?作所得的物件。唯?。 |
lastChild | ?回一?包含目前??的最後一?子??元件,若目前???有任何 最後一?子??,??回值?null。唯?。 |
nextSibling | ?回一?包含目前文件??在子??元件集合中的下一?兄弟元件, 若目前???有任何兄弟??,??回值?null。唯?。 |
nodeName | ?回一?能代表合格的目前??(元件,?性,或???考)名?字 串,唯?。 |
nodetype | ?回一??字,它分?代表目前??的DOM型? (元件、?性、文 字)。唯?。 |
enodeValu | ?回特定??的相??文字?料,?不是元件的?料值,而是未剖析 相?於??的?文字,就好像是?性和?理指令(PI),某??料型? ?回?null。?/?。 |
ondataavaiable | ?定Ondataavaiable事件?理,只能?。 |
onreadystatechange | ?定Onreadystatechange事件?理,只能?。 |
ownerDocument | ?回一?物件,它包含目前??的文件之根??。唯?。 |
parentNode | ?回包含目前??元件之所有父??元件的集合。若目前???有任 何父??,??回值?null。唯?。 |
parseError | ?回一?DOM剖析??物件,它描述了最後的剖析??。若?有? ??生,??回0。唯?。 |
previousSibling | ?回一?包含目前文件??在子??元件集合中的上一?兄弟元件, 若目前???有任何兄弟??,??回值?null。唯?。 |
readyState | ?回一??字表示目前的XML文件的??。唯?。值如下所示:
|
url | ?回最後一?成功下?文件的URL。若文件只存在???中(非?外 部?案?入),??回null值。唯?。 |
validateOnParse | 提示?剖析器文件是否被??。若?True,??被剖析?文件是被 ??的,若?false,文件??被??,且被期望?well-formed。 ?/?。 |
xml | ?回特定??和其子?的XML呈?。唯?。 |
方法 | ?明 |
abort() | 若??方法在非同步下?期?被呼叫,所有的解析?作?被 停止,在???中文件的任何部分也?被??。 |
appendChild(newChild) | 新增一????作特定??的最後一???。 |
cloneNode(deep) | 建立?一?特定??完全相同的????,deep??是一 ?布林值,若?True,?不只????而且???其子?元 件。若?False,只有特定???其?性被??。 |
createAttribute(name) | 建立一?特定名?的?性。 |
createCDATASection(data) | 建立一?CDATA?段,其中包含特定字串?料。 |
createComments(data) | 建立一?特定字串的?解。 |
createCommentFragment() | 建立一?新的文件片段,不??不把它加入文件?中。若要 ?它加入?中,必?利用insert方法,例如 insertBefore、 replaceChild、或appendChild。 |
createElement(tagName) | 建立一?特定??名?(大小?不同)的元件。 |
createEntinyReference | 建立一?特定名?的???考,不??不把它加入文件?(name) 中。若要?它加入?中,必?利用insert方法,例如 insertBefore、replaceChild、或appendChild。 |
createNode(type,name, namespaceURL) | ?定特定型?、名?及名?空?建立一?新的??。 |
createProcessingInstruction(target,data) | 建立一?包含特定目?和?料的?理指令,不??不把它加入文件?中。 若要?它加入?中,必?利用insert方法, 例如insertBefore、replaceChild、或 appendChild。 |
createTextnode(data) | 建立一?包含特定?料的新文字??,不??不把它加入 文件?中。若要?它加入?中,必?利用insert方法,例如 insertBefore、replaceChild、或 appendChild。 |
getElementsByTagName | ?回一?特定名?的元件集合。使用 "*" 的??名??定, (tagname) ???回所有在文件能找到的元件。 |
haschildnodes() | ?回True 若??含有子元件,false??有。 |
InsertBefore | 在?考??之前插入一?新子??,newChild ??是一?包 (newChild,refChild) 含新子??位置的物件,而refChild是?考??的位置。若 不包含refChild??,新的子???被插入在子??集合的 最後位置。 |
load(url) | ?特定的位置中?入指定的文件,?回True若文件?入成 功,?回False??否。 |
loadXML(xml/string) | ?入一?XML文件,或?字串?的文件片段,?回True若 文件?入成功,?回False??否。 nodeformID(idString) ?回一?符合特定值的??,若有符合的物件??回此物 件,若此操作失?,?回null值。 |
Parsed | 若目前??和此??的所有的子???,已?被剖析及, ??回值? True,若??的任何部分都尚未被剖析,?? 回null。 |
removeChild(child) | ???集合中?除特定的子??,child??就是包含要被 ?除的子??之元件。 |
replaceChild | 用提供的新???取代???。若newChild是null,?? (newChild,oldChild) ??不?被取代,而直接?除。 |
selectNodes(patternString) | ?回一???集合元件,此元件包含符合提供 XSL pattern 的??。 |
selectSingleMode | ?回第一??符合所提供的XSL pattern,若?有??任何 (Pattern String) 符合,??回null。 |
TransformNode(stylesheet) | ?回一?字串包含目前??的?理?果和它的子??使用 所提供的XSL?式。 |
事件 | ?明 |
Ondataavailable | ?任何?料可用??引?此Ondataavailable事件。??技巧? 不提示在??文件中有多少?料是可用。 |
Onreadystatechange | ?readystate性?改?,??引?Onreadystatechange 事件, 但此事件?不?提供ready state的??值,必?使用readystate 性??取得目前??。 |
基?之外的其它Scripting 技?
上面介?的?? E-Mail ?例,示?了如何存取XML物件模型,以及使用XML?料。若?一步??察??文件和它的script,我???看到??所??的代?。在我?想??法? Script??一些?,我?加入了一些技巧在其中,以?明script在?多情?下?是不?理想的。?考?下面的??:
我??在就?看一些script 的?作技巧,以避免我???所?的??。
?理XML文件?
在上一?例子中,??者必?知道XML文件中元件的?目和?型,但是如果能使用一些XML物件模型中的其它性?和方法,那?事情就???一些。
在?些有用的性??中,其中有一?是childNodes,??性???回目前??的子??集合。ChildNodes的length性??包含子??的?目。因此,?理??的子????非常容易。?考如下程式? 21-2。
Code Listing 21-2
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async=false
xmlDoc.load("email.xml")
root = xmlDoc.documentElement
for (var i=0; i
alert(root.childNodes.item(i).nodeName+" = "+root.childNodes.item(i).text)
}
程式 21-2
?21-2 ??窗包含第一?元素的名???容
?在?入HTML文件後,???一?串?生 5 ???窗,每???窗都?包含元件在 XML 文件中的名???容。第一???窗如?21-2所示。?理的程式利用了root.childNodes.length性???? XML 文件,以得知根元件包含了多少?子元件。接著,script??入一??圈,巡行??根元件的所有子元件,?取得每一?子??的名? (利用nodeName性?) 和文字?容,直到最後一????止。
不?,??程式?理???的第一?而已,若根元件的任何子元件也有子元件,??被程式21-2所忽略。Inbox.xml?案是????的文件,此文件是一?多?的???。注意第一?email甚至包含一?元件(CC),?是在其它email所?有的。
DHTML_in_Act [email protected]
My document is a tree.
This is an example of a tree structure.
XML is cool.
This is a simple message.
Here is that co de.
I send too many emails.
?需要更??的script才能得到和程式21-1相同型?的?果,也就是?示在??器中的email?容。程式21-3?XML文件起??始,然後??地由上往下巡行,?且?示每一???的?容。如果有一???有子??,其子????被??,?且?示其?容。?21-3?示?行此程式的?果。
Code Listing 21-3
var xmlDoc = new ActiveXObject("microsoft.xmldom")
xmlDoc.async=false
xmlDoc.load("inbox.xml")
root=xmlDoc.documentElement
newHTML=""
function start(){
buildTree(root)
content.innerHTML=newHTML
}
function buildTree(passedNode){
var children = passedNode.childNodes.length
for (var j=0; j
Node=passedNode.childNodes.item(j)
if (Node.nodeName=="EMAIL"){ newHTML+=("
"+Node.nodeName+" "+j) }
if (!Node.hasChildNodes()){
newHTML+=( "
"+Node.parentNode.nodeName+": "+Node.text )
}
buildTree(Node)
}
}
load="start()">
程式 21-3
?21-3 ?示XML文件的?容
我?一起??到尾?看一下??程式。?文件被?入後,script????入XML?案,?XML的根元件?定???root,接著建立空白 newHTML??,????等一下在script中?用到。?文件?束?入,在BODY??中的onload事件?理?呼叫start函式,此函式??流呼叫buildtree函式,??送XML根元件?它。
??例子主要?作是由buildTree函式?完成的,?是一??回函式,也就是??一些特殊情??生?,它?自己呼叫自己。??函式基本上可以??目前??,及?查每???多少?子??。若??含有子??,?函式?再次呼叫自己一次,?入第一?子???自己。一旦下?一??有子??的??,它?加入 newHTML??及一些HTML原始?,?描述目前??的?料,然後往上一?回到它的父??。藉由重???的?作,它可以巡行??整??料?。接著,?深入看一?函式的片段:
var children = passedNode.childNodes.length
for (var j=0; j
函式一??就找出目前有多少子??,然後?值?定?children??。下一行由一?for?圈?始,它???目前??的每一?子??重??行。
Node=passedNode.childNodes.item(j)
if (Node.nodeName=="EMAIL"){ newHTML+=("
"+Node.nodeName+" "+j) }
if (!Node.hasChildNodes()){
newHTML+=( "
"+Node.parentNode.nodeName+":
接著,目前的子???被?定?Node??。由於我?希望?料中的每一?email都可以分?,因此加入了上面的第二行。若??的名?? "EMAIL",?除了????的名?和??之外,??加入段落??
到newHTML中,我?也??是否Node.parentNode==root,因?只有在root之下的元件才有可能是EMAIL元件。
BuildTree(Node)
For?圈的最後一行再次呼叫buildtree函?,??目前???去。最後,每?元件都呼叫了此函式。更?性且有完整功能的XML tree 巡行程式可以在http://www.microsoft.com/gallery/sample/xml/tree_viewer/default.asp找到,???Tools and Samples和XML Tree viewer部分。
您??可以注意到,使用?些技巧可以?HTML文件更加?性且功能更?,?然??文件只是一?特定?型的XML文件?本而已。但是??的技巧??HTML?XML能完美的互相??。
???理
XML的物件模型提供了?多方法???者??理 XML 文件所?生的??。其中一?是文件物件的parseError性?,它提供了XML文件?生???的??,???者可以?行?理。基本上,使用者可能不?需要去?理??子的??。
ParseError性?提供了每?可能?生??的程式?。??者可以使用?些程式做下列事情:
下面的程式??明parseError如何告知使用者?生??。
Var xmlDoc = new ActiveXObject("Microsoft.xmldom");
XmlDoc.load("email.xml");
If (xmlDoc.parseError.reason == " ") {
Alert("Document loaded successfully")
}
else {
alert("The Following error occurred:"+xmlDoc.parseError.errorCode)
}
??技巧可以用於除?和?使用者可以避???。
XML Data Island
在??的例子,我??XML ?作一??料?源,??HTML?作?示的方法。?HTML文件被?示?,XML ? HTML ?被?作是??互相影?的?立文件。另一???是使用XML data islands。Data islands可以???者在HTML文件直接包括XML片段。不??於??方法的效果,目前有正反??意?,正面的意?是:
另外也有一些?面的意?,端?如何使用data islands:
?理行?XML Data Islands
要使用行?XML Data Islands,只要很??地直接插入一段XML程式?到HTML文件就好。XML文件的?容放在 ?一???中。?了示?,我?修改程式列表 21-1 ,?email.xml嵌入到html文件中,然後?程式?改?成程式列表 21-4。?生的?果和先前的例子完全一?,如?21-1。
Code Listing 21-4
DHTML_in_Act [email protected]
Basic email
This is an XML-based email.
function start(){
xmlDoc=email
var root=xmlDoc.documentElement
todata.innerText=root.childNodes.item(0).text
fromdata.innerText=root.childNodes.item(1).text
ccdata.innerText=root.childNodes.item(2).text
subjectdata.innerText=root.childNodes.item(3).text
bodydata.innerText=root.childNodes.item(4).text
}
load="start()">
To:
From:
CC:
Subject:
Body:
程式 21-4
首先注意?行?XML Data包含在 ??中, 元素?不是根??。反之,它是一?HTML??,???器可以辨?包含在 ??之?就?被?作是XML。也要注意一下 ??有ID?性,所以它可以被script叫用。新的程式? xmlDoc=email相等於使用XMLDOM ActiveXObject,然後??入一?特定的XML文件。事?上,使用的?是同一??理程式;只是用不同的方法?存取而已。除了行?XML Da ta Island,?有一?方法可以用??外部的XML文件?使用 ??。
?理??XML Data Islands
要利用 ?????XML文件,您只要使用 ??的SRC?性就好。我?可以利用下面的程式?,?取代上述的文件中之整?文件元素。
此?行?果和前面例子完全相同。??好?在於XML?料仍然?html文件分?。本?上,??方法?理的方式十分像ActiveX Control方式,除了??器必????理control及?入文件以外。
??的?性
??包含,某些?外的?性,?文件?入後,?生的事件可提供更多的控制。
VALIDATEONPARSE ?性指出?它被解析?,文件是否??被??。它的??值?True。下面是一?例子:
ASYNC ?性意指是否文件要非同步下?。它的??值?True。下面是一?例子:
XML是否?所有?生在web上??的解?方案?或者只是??大的宣??事?上都不是。XML已??得不同?域的?界所支援,而不??是在Web 上而已。?表示?有?多承?,特?是在不同的??器都能支援XML的情?下。本章只是提供十分??的 XML 概略?明,您可以在W3C?站,及一本不?的XML?考手?( XML in action by William J. Pardi Microsoft Press) 中找到更多XML的??。