日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

XML簡(jiǎn)明教程(中國(guó)XML聯(lián)盟版)

 todaytomo 2007-03-01
譯者:孫一中  董曉雨 
來(lái)源:中國(guó)XML聯(lián)盟  http://www. 
  
第1課: 處理XML元素 
---------------------------------------------------------------------------- 
---- 
什么是XML元素? 
XML是一種標(biāo)識(shí)語(yǔ)言,一組用來(lái)創(chuàng)建描述數(shù)據(jù)的語(yǔ)法標(biāo)簽的規(guī)則集。一個(gè)XML元素是由開 
始標(biāo)簽、結(jié)束標(biāo)簽以及標(biāo)簽之間的數(shù)據(jù)構(gòu)成的。開始和結(jié)束標(biāo)簽用來(lái)描述標(biāo)簽之間的數(shù) 
據(jù)。標(biāo)簽之間的數(shù)據(jù)被認(rèn)為是元素的值。例如,在下面一個(gè)XML元素的例子中,元素"di 
rector"的值是"Ed Wood"。 
<director>Ed Wood</director> 
元素名("director")允許你把"Ed Wood"這個(gè)值標(biāo)出來(lái),這樣你就能把這些數(shù)據(jù)同另外 
類似的數(shù)據(jù)區(qū)分開來(lái)。例如,有可能另一個(gè)元素的值也是"Ed Wood"。 
<actor>Ed Wood</actor> 
由于每個(gè)元素都有不同的標(biāo)簽名,所以你能很容易把上面兩個(gè)元素的值區(qū)別開來(lái)。如果 
從語(yǔ)義上沒(méi)有辦法把數(shù)據(jù)標(biāo)出來(lái),兩個(gè)有同樣值的元素會(huì)混淆起來(lái)。 
  

 

屬性 
一個(gè)元素可以包含一個(gè)或多個(gè)屬性,屬性是一個(gè)由“=”隔開的名稱值,如: 
<CITY ZIP="01085">Westfield</CITY> 
在上面的例子中,ZIP="01085"是元素<CITY>的一個(gè)屬性。屬性用來(lái)給一個(gè)元素添加附加 
的、次要的信息,通常是元信息,屬性還可以使用缺省值,而元素卻不能這樣做。元素 
的每一個(gè)屬性可以以任意順序進(jìn)行說(shuō)明,但僅能說(shuō)明一次。 
此外,XML標(biāo)簽對(duì)大小寫敏感,因此以下這三個(gè)是不同的元素。 
<City><CITY><city>

第2課: 處理XML文檔 
---------------------------------------------------------------------------- 
---- 
什么是XML文檔? 
一個(gè)基本的XML文檔就是一個(gè)XML元素,它可以嵌套XML元素。例如,下面的XML元素“bo 
oks”就是一個(gè)有效的XML文檔。 
<books> 
   <book isbn="0345374827"> 
      <title>The Great Shark Hunt</title> 
      <author>Hunter S. Thompson</author> 
   </book> 
</books> 
處理指導(dǎo) 
構(gòu)建一個(gè)基本的XML文檔需要記住關(guān)鍵的四點(diǎn): 
所有元素必須有結(jié)束標(biāo)簽; 
所有元素必須正確的嵌套(不允許交迭元素); 

所有特征值必須加引號(hào); 
每一個(gè)文檔都必須有一個(gè)唯一的第一元素和根節(jié)點(diǎn)。

第3課 處理XML數(shù)據(jù)島 
---------------------------------------------------------------------------- 
---- 
什么是XML數(shù)據(jù)島? 
數(shù)據(jù)島是指存在于HTML頁(yè)面中的XML代碼。數(shù)據(jù)島允許你在HTML頁(yè)面中集成XML,對(duì)XML編 
寫腳本,而不需要通過(guò)腳本或<OBJECT>標(biāo)簽讀取XML。幾乎所有能夠存在于一個(gè)結(jié)構(gòu)完整 
的XML文檔中的東西都能存在于一個(gè)數(shù)據(jù)島中。包括處理指示、DOCTYPE聲明和內(nèi)部子集 
。(注意,編碼串不能放在數(shù)據(jù)島中。) 
<XML>元素標(biāo)記數(shù)據(jù)島的開始,它的ID屬性提供了一個(gè)可以用來(lái)引用數(shù)據(jù)島的名稱。 
數(shù)據(jù)島的XML可以是內(nèi)嵌的: 
<XML ID="XMLID"> 
   <customer> 
      <name>Herbert Hanley</name> 
      <custID>81422</custID> 
   </customer> 

</XML> 
或者在XML標(biāo)簽中通過(guò)SRC屬性引用: 
<XML ID="XMLID" SRC="customer.xml"></XML> 
也可以使用<SCRIPT>標(biāo)簽來(lái)創(chuàng)建一個(gè)數(shù)據(jù)島: 
 <SCRIPT LANGUAGE="xml" ID="XMLID"> 
  <customer> 
    <name>Mark Hanson</name> 
    <custID>81422</custID> 
  </customer> 
</SCRIPT>

第4課: 使用XML對(duì)象模型
----------------------------------------------------------------------------
----
什么是XML對(duì)象模型?
XML對(duì)象模型是一個(gè)對(duì)象集,可以使用這個(gè)對(duì)象集來(lái)訪問(wèn)或處理存儲(chǔ)在XML文檔中的數(shù)據(jù)
。XML文檔構(gòu)成一顆樹,樹上的每一個(gè)元素可以看作是一個(gè)節(jié)點(diǎn),具有不同屬性和方法的
對(duì)象代表了樹和它的節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)包含文檔中的實(shí)際數(shù)據(jù)。
如何訪問(wèn)樹中的節(jié)點(diǎn)?
可以通過(guò)象腳本來(lái)訪問(wèn)樹中的節(jié)點(diǎn)。這些對(duì)象是在解析器裝載并解析XML文檔時(shí)由XML解
析器創(chuàng)建的。通過(guò)ID值可以引用樹,或文檔對(duì)象。在下面的例子中,MyXMLDocument是文
檔的對(duì)象的ID值,使用文檔對(duì)象的屬性和方法可以訪問(wèn)樹的根和子節(jié)點(diǎn)對(duì)象。根,或文
檔元素,是最頂層的節(jié)點(diǎn),子節(jié)點(diǎn)從根上擴(kuò)展開形成XML樹。根節(jié)點(diǎn)只可以在文檔中出現(xiàn)
一次。
點(diǎn)擊下面的數(shù)據(jù)島可以展示用來(lái)訪問(wèn)每個(gè)節(jié)點(diǎn)的代碼。根節(jié)點(diǎn)是<class>,它的子節(jié)點(diǎn)是
<student>,這個(gè)子節(jié)點(diǎn)還有兩個(gè)子節(jié)點(diǎn)<name>和<GPA>。
<XML ID="MyXMLDocument">
  <class>
    <student studentID="13429">
      <name>Jane Smith</name>
      <GPA>3.8</GPA>
    </student>
  </class>
</XML>
下面列出了一些簡(jiǎn)單的屬性和方法,可用來(lái)訪問(wèn)XML文檔的節(jié)點(diǎn)。
XMLDocument:返回對(duì)XML文檔對(duì)象模式的引用。
documentElement:返回XML文檔的根節(jié)點(diǎn)。
childNodes:返回節(jié)點(diǎn)的孩子節(jié)點(diǎn)目錄。
item:通過(guò)索引訪問(wèn)目錄中的個(gè)別節(jié)點(diǎn)。索引值是從0開始的,所以item(0)返回第一個(gè)
節(jié)點(diǎn)。
text:返回節(jié)點(diǎn)的內(nèi)容。
下面是一個(gè)帶有數(shù)據(jù)島的HTML頁(yè)面。數(shù)據(jù)島被包含在<XML>元素中。
<HTML>
   <HEAD>
       <TITLE>HTML with XML Data Island</TITLE>
   </HEAD>
   <BODY>
        <P>Within this document is an XML data island.</P>
        <XML ID="resortXML">
            <resorts>
                <resort>Calinda Cabo Baja</resort>
                <resort>Na Balam Resort</resort>
            </resorts>
        </XML>
   </BODY>
</HTML>
你能通過(guò)ID屬性訪問(wèn)數(shù)據(jù)島,“resortXML”成為文檔對(duì)象的名稱。你能利用這個(gè)對(duì)象的
方法和屬性訪問(wèn)它的根節(jié)點(diǎn)和孩子節(jié)點(diǎn)。在上面的例子中,根節(jié)點(diǎn)是<resorts>,孩子節(jié)
點(diǎn)是<resort>。
下面的代碼訪問(wèn)第二個(gè)孩子節(jié)點(diǎn)<resort>并返回它的內(nèi)容“Na Balam Resort”。
resortXML.XMLDocument.documentElement.childNodes.item(1).text
如何獲得XML DOM樹的信息?
有以下幾種方法和接口來(lái)獲得DOM的信息。
如果使用腳本語(yǔ)言,DOMDocument對(duì)象提供load、loadXML、save方法和xml屬性。
對(duì)Visual Basic 和 C 或 C++ 編程者來(lái)說(shuō),IXMLDOMDocument接口提供和DOMDocument對(duì)
象同樣的成員。
IXMLDOMDocument也可以實(shí)現(xiàn)標(biāo)準(zhǔn)的COM接口,如IPersistStreamInit、IPersistMonike
r和IStream。

第5課:使用XML名域 
---------------------------------------------------------------------------- 
---- 
什么是XML名域? 
XML名域是一組可以用作XML文檔的元素或?qū)傩悦Q的名稱集。為了避免元素之間出現(xiàn)相 
同名稱的沖突,名域限定Web中的名稱必須是唯一的。名域由某些URI(Universal Reso 
urce Identifier)來(lái)進(jìn)行識(shí)別,不管是URL(Uniform Resource Locator),還是URN( 
Uniform Resource Number)都沒(méi)有關(guān)系,它并不管指向的什么內(nèi)容。URI使用簡(jiǎn)單,因 
為它們?cè)贗nternet上是全球唯一的。 
名域可以顯式聲明,也可以缺省聲明。在顯式聲明中可以定義一個(gè)簡(jiǎn)寫形式或是一個(gè)詞 
頭來(lái)代替整個(gè)名域,可以使用這個(gè)詞頭來(lái)引用屬于名域的元素。當(dāng)節(jié)點(diǎn)包含不同名域的 
元素時(shí),顯式聲明非常有用。缺省聲明聲明一個(gè)可以被所有元素訪問(wèn)的名域,而且并不 
定義詞頭。 
<BOOKS> 
  <bk:BOOK xmlns:bk="urn:BookLovers.org:BookInfo" 
           xmlns:money="urn:Finance:Money"> 

    <bk:TITLE>A Suitable Boy</bk:TITLE> 
    <bk:PRICE money:currency="US Dollar">22.95</bk:PRICE> 
  </bk:BOOK> 
</BOOKS> 
所有以"bk:"或"money:"開頭的元素都可以看成是分別來(lái)自于名域"urn:BookLovers.org 
:BookInfo"或"urn:Finance:Money"。 
如何聲明缺省名域? 
在名域聲明時(shí)沒(méi)有詞頭就屬于文檔的缺省名域,文檔中所有沒(méi)有詞頭的元素和屬性都屬 
于缺省名域。下面的例子聲明了<BOOK>元素和<BOOK>中所有的元素(<TITLE>, <PRICE> 
, currency)都屬于名域"urn:BookLovers.org:BookInfo."。 
<BOOK xmlns="urn:BookLovers.org:BookInfo"> 
  <TITLE>A Suitable Boy</TITLE> 
  <PRICE currency="US Dollar">22.95</PRICE> 
</BOOK>

第6課 使用XML Schema 
---------------------------------------------------------------------------- 
---- 
什么是XML Schema? 
XML Schema是一個(gè)基于XML的語(yǔ)法或schema規(guī)范,用來(lái)定義XML文檔的標(biāo)記方式。XML Sc 
hema是一個(gè)由Microsoft建議的schema規(guī)范,它與文檔類型定義(DTD)相比具有很大的 
優(yōu)勢(shì),而DTD是最初用來(lái)定義XML模型的schema規(guī)范。DTD存在很多缺點(diǎn),包括使用非XML 
語(yǔ)法,不支持?jǐn)?shù)據(jù)類型定義,不具有擴(kuò)展性等。例如,DTD不允許把元素內(nèi)容定義為另外 
一個(gè)元素,或字符串。想了解更多有關(guān)DTD的內(nèi)容,可以參考W3C XML建議書。 XML Sch 
ema從幾個(gè)方面改善了DTD,包括使用XML語(yǔ)法,支持?jǐn)?shù)據(jù)類型定義和名域。例如,XML S 
chema允許你把一個(gè)元素說(shuō)明為一個(gè)integer, float,Boolean, URL等類型。 
在Internet Explorer 5中的XML解析器可以解析使用DTD或XML Schema的XML文檔。 
如何建立XML Schema? 
請(qǐng)?jiān)谙旅娴腦ML文檔中找一找每個(gè)節(jié)點(diǎn)的schema聲明。 
<class xmlns="x-schema:classSchema.xml"> 
      <student studentID="13429"> 
         <name>Jane Smith</name> 
         <GPA>3.8</GPA> 
     </student> 
</class> 
你會(huì)注意到在上面文檔中默認(rèn)的名域是“x-schema:classSchema.xml”。這告訴解析器 
根據(jù)URL(“classSchema.xml”)上的schema(x-schema)來(lái)解析整個(gè)文檔。 
下面是上面那個(gè)文檔的完整的schema。注意schema的根元素中的名域聲明。第一個(gè)(xml 
ns=”urn:schemas-microsoft-com:xml-data”)表明這個(gè)XML文檔是一個(gè)XML Schema。第 
二個(gè)(xmlns:dt=”urn:schemas-microsoft-com:datatypes”)允許schema處理者在Elem 
entType和AttributeType聲明中的type屬性前加dt前綴來(lái)說(shuō)明元素的類型和內(nèi)容的特征 
。 
<Schema  xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-mi 
crosoft-com:datatypes"> 
     <AttributeType name=‘studentID‘ dt:type=‘string‘ required=‘yes‘/> 
     <ElementType name=‘name‘ content=‘textOnly‘> 
     <ElementType name=‘GPA‘ content=‘textOnly‘ dt:type=‘float‘/> 
     <ElementType name=‘student‘ content=‘mixed‘> 
         <attribute type=‘studentID‘/> 
         <element type=‘name‘/> 
         <element type=‘GPA‘/> 
     </ElementType> 
     <ElementType name=‘class‘ content=‘eltOnly‘> 
         <element type=‘student‘/> 
     </ElementType> 
</Schema> 
用來(lái)定義元素和屬性的聲明元素如下所示: 
元    素 
 說(shuō)    明 
ElementType 把類型和條件賦給一個(gè)元素,可以包含子元素 
AttributeType 把類型和條件賦給一個(gè)屬性 
attribute 聲明以前定義過(guò)的屬性類型可以出現(xiàn)在名為ElementType的元素的作用域中 
element 聲明以前定義過(guò)的元素類型可以出現(xiàn)在名為ElementType的元素的作用域中 
  
Schema的內(nèi)容以最深層的元素的“AttributeType”和“ElementType”聲明開頭。 
<AttributeType name=‘studentID‘ dt:type=‘string‘ required=‘yes‘/> 
<ElementType name=‘name‘ content=‘textOnly‘> 
<ElementType name=‘GPA‘ content=‘textOnly‘ dt:type=‘float‘/> 
ElementType聲明后接著就是它的屬性和子元素,如果一個(gè)元素有屬性或子元素,必須把 
這種方法包含在它的ElementType聲明中,或者是必須在它們自己的 ElementType 或 A 
ttributeType聲明中進(jìn)行前導(dǎo)聲明。 
<ElementType name=‘student‘ content=‘mixed‘> 
     <attribute type=‘studentID‘/> 
     <element type=‘name‘/> 
     <element type=‘GPA‘/> 
</ElementType> 
不同于DTDs,XML Schema允許有一個(gè)開放的內(nèi)容模式,你可以進(jìn)行定義數(shù)據(jù)類型、使用 
默認(rèn)值等等操作而不必限定內(nèi)容。 
在下面的schema中,<GPA> 元素的類型被定義并有一個(gè)默認(rèn)值,但在 <student> 元素中 
沒(méi)有其他節(jié)點(diǎn)被聲明。 
<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-mic 
rosoft-com:datatypes"> 
      <AttributeType name="scale" default="4.0"/> 
      <ElementType name="GPA" content="textOnly" dt:type="float"> 
         <attribute type="scale"/> 
      </ElementType> 
      <AttributeType name="studentID"/> 
      <ElementType name="student" content="eltOnly" model="open" order="many 
"> 
         <attribute type="studentID"/> 
         <element type="GPA"/> 
      </ElementType> 
</Schema> 
上面的schema允許你只驗(yàn)證你所關(guān)心的區(qū)域,這使你對(duì)文檔的驗(yàn)證級(jí)別有更多的控制, 
并允許你使用schema提供的一些特性而不必嚴(yán)格確認(rèn)。 
嘗試一下! 
試著處理一下下面的XML文檔的schema。 
<order> 
  <customer> 
    <name>Fidelma McGinn</name> 
    <phone_number>425-655-3393</phone_number> 
  </customer> 
  <item> 
    <number>5523918</number> 
    <description>shovel</description> 
    <price>39.99<price> 
  </item> 
  <date_of_purchase>1998-10-23</date_of_purchase> 
  <date_of_delivery>1998-11-03</date_of_delivery> 
</order> 
如果你處理完schema,在XML Validator中運(yùn)行 . 
下載MSDN Online的區(qū)域中提供了一套 XML sample files, 包括一個(gè)有相關(guān)schema的XM 
L文檔。下載這些示例程序可以與XML文檔和schema一起運(yùn)行。如果你想要根據(jù)一個(gè)sche 
ma來(lái)測(cè)試XML的有效性,可以從XML Validator 處下載文檔或查看Mime Type Viewer中的 
XML文件。 
一些說(shuō)明: 
ElementType和 AttributeType 聲明必須放在attribute和element內(nèi)容聲明之前。例如 
,在上面的schema中,<GPA>元素的ElementType聲明必須放在<student>元素的Element 

Type聲明之前?!?nbsp;
order屬性的默認(rèn)值是建立在content屬性的值上的。當(dāng)content值為“eltOnly”時(shí),or 
der默認(rèn)值是seq。當(dāng)content值為“mixed”時(shí),order默認(rèn)值是“many”。see 如果想了 
解有關(guān)這些缺省值的信息,可以查看 XML Schema Reference。

第7課:在XML文檔中使用數(shù)據(jù)類型 
---------------------------------------------------------------------------- 
---- 
什么是XML文檔中的數(shù)據(jù)類型? 
XML文檔中的數(shù)據(jù)類型是賦給實(shí)例中一個(gè)元素的類型,可以使用dt:dt屬性來(lái)實(shí)現(xiàn),也可 
以通過(guò)一個(gè)XML Schema,一個(gè)XML文檔的正式定義來(lái)實(shí)現(xiàn)。此外,數(shù)據(jù)類型可以聲明為元 
素,XML解析器使用數(shù)據(jù)類型信息來(lái)驗(yàn)證文檔的有效性。 
以前,XML元素的值局限于一個(gè)單一的類型String,因此想要處理XML文檔的開發(fā)者需要 
花費(fèi)大量的時(shí)間來(lái)把應(yīng)用程序中的所有值都轉(zhuǎn)換為一種類型。輸入數(shù)據(jù)時(shí)解析器將會(huì)注 
意到數(shù)據(jù)類型的轉(zhuǎn)換。此外,因?yàn)檫@些值都賦予一個(gè)特定的數(shù)據(jù)類型,所以對(duì)這些值的 
轉(zhuǎn)換遵循要數(shù)據(jù)類型的規(guī)范,這就提供了一種驗(yàn)證用戶輸入有效性的方法。 
除了有一個(gè)String的值,每一個(gè)XML元素也可以有一個(gè)類型定義的值,例如下面的XML元 
素: 
<date>1970-09-30</date>  
如何對(duì)XML元素值進(jìn)行數(shù)據(jù)類型定義? 
看一看下面的XML文檔: 
<?xml version="1.0"?> 
<weather xmlns="x-schema:weatherSchema.xml"> 
  <date>1970-09-30</date> 
  <degrees>67.5</degrees> 
</weather> 
其中"weatherSchema.xml"是下面的文件。 
<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-mic 
rosoft-com:datatypes"> 
  <ElementType name="date" content="textOnly" dt:type="date"/> 
  <ElementType name="degrees" content="textOnly" dt:type="float"/> 
  <ElementType name="weather" content="eltOnly"> 
    <element type="date"/> 
    <element type="degrees"/> 
  </ElementType> 
</Schema> 
上面的schema是一個(gè)把數(shù)據(jù)類型賦給前面的XML文檔的正式定義。屬性xmlns是聲明名域 
的XML關(guān)鍵字,聲明‘xmlns:dt="urn:schemas-microsoft-com:datatypes"‘把dt賦給名域 
"urn:schemas-microsoft-com:datatypes.",任何定義為dt的類型都屬于名域"urn:sch 
emas-microsoft-com:datatypes.". 
Schema 和數(shù)據(jù)類型名域要在XML Schema的開始進(jìn)行聲明,這樣dt詞頭可以用來(lái)指示數(shù)據(jù) 
類型定義中使用那種 類型的屬性。 
<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-mic 
rosoft-com:datatypes"> 
  <ElementType name="NUMBER" content="textOnly" dt:type="number"/> 
對(duì)XML文檔中的元素進(jìn)行類型定義 
元素可以通過(guò)元素實(shí)例的 dt 屬性進(jìn)行類型定義,而要這樣做需要在XML文檔的開始聲明 
數(shù)據(jù)類型名域。 
<NUMBERS xmlns:dt="urn:schemas-microsoft-com:datatypes"> 
  <NUMBER dt:dt="number">44533</NUMBER> 
</NUMBERS> 
dt詞頭現(xiàn)在可以作為dt的屬性把數(shù)據(jù)類型賦給元素的實(shí)例。 
在XML文檔中把數(shù)據(jù)類型作為元素使用 
除了在元素的實(shí)例或schema中聲明數(shù)據(jù)類型外,數(shù)據(jù)類型也可以作為元素使用,比較下 
面的例子,第一個(gè)例子在元素的實(shí)例中聲明數(shù)據(jù)類型: 
<shoes xmlns:dt="urn:schemas-microsoft-com:datatypes" id="f1121" sizes="mens 
"/> 
<sizes id="mens"> 
  <size dt:dt="int">8</size> 
  <size dt:dt="int">10</size> 
  <size dt:dt="int">12</size> 
</sizes> 
第二個(gè)例子把類型聲明為元素: 
<shoes xmlns:dt="urn:schemas-microsoft-com:datatypes" id="f1121" sizes="arra 
y1"/> 

<array id="array1"> 
  <dt:int>8</dt:int> 
  <dt:int>10</dt:int> 
  <dt:int>12</dt:int> 
</array> 
而通過(guò)schema是不可能對(duì)這種元素進(jìn)行類型定義的。 
在 XML Data Types Reference中,有一個(gè)可以在 XML文檔中使用的數(shù)據(jù)類型的列表。

第8課:訪問(wèn)經(jīng)過(guò)類型定義的XML值 
---------------------------------------------------------------------------- 
---- 
什么是經(jīng)過(guò)類型定義的XML值? 
經(jīng)過(guò)類型定義的XML值是指在XML Schema中被指定數(shù)據(jù)類型的元素值。XML解析器使用sc 
hema來(lái)確認(rèn)文檔。XML Schema信息可以放在schema文件中,也可以放在本身的XML文檔中 
 。 
如何訪問(wèn)經(jīng)過(guò)類型定義的XML值? 
可以通過(guò)XML對(duì)象模型訪問(wèn)經(jīng)過(guò)類型定義的數(shù)據(jù)。就好象你能通過(guò)調(diào)用元素節(jié)點(diǎn)的nodeV 
alue屬性找到元素值一樣,你可以調(diào)用元素本身的nodeTypedValue屬性找到經(jīng)過(guò)類型定 
義的元素值。 
例如,考慮一下下面的XML文檔: 
<?xml version="1.0"?> 
<weather xmlns="x-schema:weatherSchema.xml"> 
      <date>1970-09-30</date> 
      <degrees>67.5</degrees> 

</weather> 
其中“weatherSchema.xml”是下面這個(gè)文件: 
<Schema xmlns="urn:schemas-microsoft-com:xml-data"xmlns:dt="urn:schemas-micr 
osoft-com:datatypes"> 
       <ElementType name="date" content="textOnly" dt:type="date"/> 
       <ElementType name="degrees" content="textOnly" dt:type="float"/> 
       <ElementType name="weather" content="eltOnly"/> 
           <element type="date"/> 
           <element type="degrees"/> 
       </ElementType> 
</Schema> 
如果你要定位<degrees>這個(gè)元素(xmlDocument.documentElement.childNodes.item(1 
)),你可以按如下方式調(diào)用nodeTypedValue來(lái)訪問(wèn)它的類型定義值: 
(xmlDocument.documentElement.childNodes.item(1).nodeTypedValue)。

第9課:使用C++ XML DSO 
---------------------------------------------------------------------------- 
---- 
什么是C++ XML DSO? 
Microsoft? Internet Explorer 5中內(nèi)嵌了一個(gè)C++數(shù)據(jù)源對(duì)象(DSO),可以用來(lái)把XML連 
接到HTML中。Microsoft? Internet Explorer 4中內(nèi)嵌的Java XML DSO在Internet Exp 
lorer 5中仍然支持,但是新的C++ DSO有更好的性能,還可以直接連接X(jué)ML數(shù)據(jù)島。 
如何把XML連接到HTML上? 
考慮下面的XML文件: 
<universities> 
  <university> 
    <name>UCSB</name> 
    <location>Santa Barbara, CA</location> 
  </university> 
  <university> 
    <name>University of Texas at Arlington</name> 
    <location>Arlington, TX</location> 
  </university> 
  <university> 
    <name>USM</name> 
    <location>Hattiesburg, MS</location> 
  </university> 
  <university> 
    <name>Baylor</name> 
    <location>Waco, TX</location> 
  </university> 
</universities> 
可以用以下的HTML把這個(gè)XML連接到一個(gè)重復(fù)表中: 
<XML ID=xmlDoc src="universities.xml"></XML> 
<TABLE DATASRC="#xmlDoc" BORDER=1> 
  <THEAD><TH>NAME</TH><TH>LOCATION</TH></THEAD> 
  <TR> 
    <TD><SPAN DATAFLD="name"></SPAN></TD> 
    <TD><SPAN DATAFLD="location"></SPAN></TD> 
  </TR> 
</TABLE> 
這里不需要<APPLET> 或 <OBJECT>標(biāo)簽,因?yàn)閄ML DSO已經(jīng)為你完成了這些工作

第10課 :在C++ XML DSO中使用主/細(xì)節(jié)特征
----------------------------------------------------------------------------
----
什么是主/細(xì)節(jié)特征?
新的主/細(xì)節(jié)特征允許你連接到一個(gè)分層紀(jì)錄集的當(dāng)前記錄上,這就意味著你可以把當(dāng)前
紀(jì)錄的子元素連接到一個(gè)截然不同的表中。例如,考慮一下的XML:
<orders>
  <order order_number="2233">
    <customer>
      <name>John Smith</name>
      <custID>192883</custID>
    </customer>
    <item>
      <name>Fly Swatter</name>
      <price>9.99</price>
    </item>
  </order>
  <order order_number="2234">
    <customer>
      <name>Marea Angela Castaneda</name>
      <custID>827145</custID>
    </customer>
    <item>
      <name>Fly Paper</name>
      <price>15.99</price>
    </item>
  </order>
  <order order_number="2235">
    <customer>
      <name>Amy Jones</name>
      <custID>998022</custID>
    </customer>
    <item>
      <name>Mosquito Netting</name>
      <price>38.99</price>
    </item>
  </order>
</orders>
你可以允許你的用戶通過(guò)ID來(lái)定位訂單,并顯示(也僅能顯示)當(dāng)前訂單上的客戶和項(xiàng)
目信息,你的用戶并不能查看所有訂單的信息——僅能查看自己感興趣的。
如何連接到細(xì)節(jié)?
連接到層次結(jié)構(gòu)中的底層(細(xì)節(jié)信息)的關(guān)鍵是了解你的數(shù)據(jù)的結(jié)構(gòu),上面的XML在根元
素<orders>中含有有三個(gè)元素?;赬ML DSO所采用的試探法,每一個(gè)訂單都映射到一個(gè)
包含"order_number"、 "customer"、 和 "item"等域的行集中。"order_number"列包含
"order_number"屬性的值,"customer"和"item"列包含指向各自的"customer"和"item"
紀(jì)錄集的指針。"customer"記錄集中包含帶有"name"和"custID"域的元素的值,"item"
記錄集中包含帶有"name"和"price"域的元素的值。
這樣,在頂層("orders")紀(jì)錄集中,你可以找到"order_number"的值,然后允許你的
用戶通過(guò)"order_number"定位訂單。
<P>ORDER NUMBER: <SPAN DATASRC="#xmlDoc" DATAFLD="order_number"></SPAN></P>
現(xiàn)在再添加幾個(gè)按鈕來(lái)幫助用戶瀏覽"orders"紀(jì)錄集。
<INPUT TYPE=BUTTON VALUE="Previous Order" onclick="xmlDoc.recordset.movePrev
ious()">
<INPUT TYPE=BUTTON VALUE="Next Order" onclick="xmlDoc.recordset.moveNext()">

為了在當(dāng)前紀(jì)錄的子元素中檢索這個(gè)值,創(chuàng)建一張表并把表的 DATASRC 屬性設(shè)置為"#x
mlDoc",就和上面所作的一樣,但是這時(shí)也要把它的 DATAFLD 屬性設(shè)置為 "customer"
。這是為了告訴表連接到"customer"紀(jì)錄集中的數(shù)據(jù)上,而"customer"紀(jì)錄集由"order
s"紀(jì)錄集中的"customer"域的指針指向。
<TABLE DATASRC="#xmlDoc" DATAFLD="customer" BORDER>
  <THEAD><TH>NAME</TH><TH>ID</TH></THEAD>
  <TR>
    <TD><SPAN DATAFLD="name"></SPAN></TD>
    <TD><SPAN DATAFLD="custID"></SPAN></TD>
  </TR>
</TABLE>
接著對(duì)"item"元素作同樣的處理。
<TABLE DATASRC="#xmlDoc" DATAFLD="item" BORDER=1>
  <THEAD><TR><TH>ITEM</TH><TH>PRICE</TH></TR></THEAD>
  <TR>
    <TD><SPAN DATAFLD="name"></SPAN></TD>
    <TD><SPAN DATAFLD="price"></SPAN></TD>
  </TR>
</TABLE>
現(xiàn)在,當(dāng)用戶點(diǎn)擊按鈕并移到紀(jì)錄集中的后一個(gè)或前一個(gè)紀(jì)錄時(shí),表中的數(shù)據(jù)會(huì)相應(yīng)的
改變到當(dāng)前紀(jì)錄。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多