• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

            在 HTML中顯示XML數(shù)據(jù)的策略

             

            XML 的全名是 eXtenxible Markup Language (可以延伸或擴(kuò)展的標(biāo)記語言),它的語法類似 HTML ,都是用標(biāo)簽來描述數(shù)據(jù)。 HTML 的標(biāo)簽是固定的,我們只能使用、不能修改; XML 則不同,它沒有預(yù)先定義好的標(biāo)簽可以使用,而是依據(jù)設(shè)計上的需要,自行定義標(biāo)簽。所以在電子商務(wù)的網(wǎng)絡(luò)時代,用 XML 來組織數(shù)據(jù),再用 HTML 頁面來顯示,將是設(shè)計網(wǎng)頁的新方向。

              本文主要對兩種在 HTML 中存貯并顯示 XML 文檔數(shù)據(jù)的策略(數(shù)據(jù)綁定、 DOM )進(jìn)行探討。

            一、 數(shù)據(jù)綁定( Data Binding )技術(shù)

              數(shù)據(jù)綁定技術(shù)適用于結(jié)構(gòu)規(guī)則的 XML 文檔,它對 XML 文檔的數(shù)據(jù)用類似于關(guān)系數(shù)據(jù)庫的技術(shù)進(jìn)行處理。

              例如,有一個關(guān)于產(chǎn)品目錄的 XML 文檔( product.xml )結(jié)構(gòu)如下:

               ……

                <CATALOGUE>

                 <PRODUCT InStock=”yes”>

                  <PRODUCTID>00001</PRODUCTID>

                  <PRODUCTNAME Supplier=”fuller”>

                      football </PRODUCTNAME>

                  <PRICE> 50</PRICE>

                ……

                 </PRODUCT>

                ……

                </CATALOGUE>

              按下面介紹的兩個步驟,可將 XML 文檔和 HTML 文檔綁定,并在 IE5 中顯示 XML 文檔的數(shù)據(jù)。

              1. 把一個 XML 文檔連接到一個 HTML 文檔中

              方法一:將整個 XML 文檔插入至 HTML 文檔中,其形式如下:

                  <HTML>

                  <HEAD>

                   <TITLE> product decription</TITLE>

                  </HEAD>

                  <BODY>

                   <XML ID=”product”>

                   <?XML version=”1.0”?>

                  …… ‘ 將以上的 product.xml 文檔的內(nèi)容插入至該處

                   </XML>

                  ……

                  <BOLY>

                  </HTML>

               方法二:只將一個對 XML 文檔的引用插入至 HTML 文檔中,其形式如下:

                  <HTML>

                  <HEAD>

                   <TITLE> product decription</TITLE>

                  </HEAD>

                  <BODY>

                   <XML ID=”product” SRC=”product.xml”> </XML> ‘ src 指出引用的 XML 文檔源

                   ……

                  </BODY>

                  </HTML>

               方法二的好處在于:它將 XML 文檔的數(shù)據(jù)和 HTML 的顯示格式分開,便于用戶進(jìn)行維護(hù)。而且,多個 HTML 文檔可以共享一個 XML 文檔。

              當(dāng) IE5 打開一個 HTML 文檔時,其內(nèi)置的 XML 處理器會讀取和分析頁面中已連接的 XML 文檔,然后產(chǎn)生一個數(shù)據(jù)源對象( DSO ,全稱是 Data Source Object ),以便存貯和讀取數(shù)據(jù)。 DSO 在存貯 XML 文檔中的數(shù)據(jù)時,會將元素解釋成記錄和字段的集合,并自動抽取 XML 元素的數(shù)據(jù)和處理所有的顯示細(xì)節(jié)。

              2 .將標(biāo)準(zhǔn)的 HTML 元素(例如 TABLE SPAN 等)和 XML 元素綁定

              方法一:表數(shù)據(jù)綁定,即將 HTML TABLE 元素和 XML 數(shù)據(jù)綁定,以便在 IE5 中用表格的形式一次性地顯示整個 XML 文檔的數(shù)據(jù)。

              其形式如下:

                 ……

                 <TABLE DATASRC=”#PRODUCT” BORDER=”1” ……>

                  <THEAD>

                   <TH> productid</TH>

                   ……

                  </TH>

                 </THEAD> ‘ 顯示表格的標(biāo)題

                 <TR ALIGN=”center”>

                  <TD><SPAN DATAFLD=”productid”></SPAN></TD> ‘ 在表格單元格中顯示 productid 的內(nèi)容

                  ……

                 </TR>

                </TABLE>

                 ……

              方法二:單一記錄數(shù)據(jù)綁定,即將 HTML 元素(如 SPAN 、 BUTTON LABEL 等非表格元素)和 XML 文檔中的一個單一的字段進(jìn)行綁定,以便在 IE5 中一次只顯示一條記錄的內(nèi)容。此時,為了瀏覽方便,最好在頁面中增加關(guān)于記錄的導(dǎo)航按鈕。

              其形式如下:

               ……

               <SPAN STYLE=”font-style:italic”> ProductID</SPAN> ‘ 顯示標(biāo)題

              <SPAN DATASRC=”#product” DATAFLD=”productid”

                 STYLE=”font-weight:bold”></SPAN> ‘ 顯示 productid 的內(nèi)容

              ……

              <BUTTON ONLICK=”product.recordset.moveprevious();

                        if (product.recordset.bof)

                        product.recordset.movenext()”>

                        &lt;back;

              </BUTTON> ‘ 產(chǎn)生一個向前導(dǎo)航的按鈕

              ……

              注意:當(dāng)用數(shù)據(jù)綁定技術(shù)顯示 XML 文檔數(shù)據(jù)時,如果 XML 元素中有參數(shù),則 DSO 會將該元素處理成層次型的記錄。例如: product.xml 文檔中的“ PRODUCTNAME ”元素有一個“ Supplier ”參數(shù),則 DSO 會將該元素處理成下面的形式:

              <PRODUCTNAME>

               <Supplier> fuller</Supplier>

               <$TEXT>football</$TEXT>

              </PRODUCTNAME>

              此時,必須用 $TEXT 作為字段名來讀取“ football ”數(shù)據(jù),其形式如下:

              ……

                <TABLE DATASRC=”#product” DATAFLD=”productname”>

                <TR>

                  <TD><SPAN DATAFLD=”$TEXT”></SPAN></TD>

                  <TD><SPAN DATAFLD=”Supplier”></SPAN></TD>

                </TR>

                <TABLE>

              ……

            二、 DOM 技術(shù)

              1 DOM 技術(shù)的特點

              DOM XML Document Object Model 的簡稱。它是 XML 文檔和 HTML 文檔的接口,其中包含一系列代表 XML 文檔不同部件的程序?qū)ο蟆@眠@些對象的屬性和方法,并使用腳本語言(如 VBScript JavaScript 等)編制成腳本后,就可以在一個 HTML 頁面中顯示 XML 文檔的數(shù)據(jù)。雖然利用 DOM 技術(shù)比數(shù)據(jù)綁定技術(shù)復(fù)雜,但它可以處理及顯示結(jié)構(gòu)規(guī)則或不規(guī)則的 XML 文檔中任意部件(如元素、參數(shù)、處理指示、注釋、實體和標(biāo)記等)的數(shù)據(jù)內(nèi)容,

              和數(shù)據(jù)綁定技術(shù)類似,要使用 DOM 技術(shù),必須首先對 XML 文檔源進(jìn)行引用:

              <XML ID=”product” SRC=”product.xml”></XML> ‘ XML 文檔源的引用

              接著,就可以利用 DSO XMLDocument 成員使用 DOM

              Document=product.XMLDocument

              作為 W3C 的標(biāo)準(zhǔn)接口規(guī)范,目前, DOM 由三部分組成,包括:核心( core )、 HTML XML 。核心部分是結(jié)構(gòu)化文檔比較底層對象的集合,這一部分所定義的對象已經(jīng)完全可以表達(dá)出任何 HTML XML 文檔中的數(shù)據(jù)。 HTML 接口和 XML 接口兩部分則是專為操作具體的 HTML 文檔和 XML 文檔而提供的高級接口,它們可以使得對這兩類文件的操作更加方便。

              當(dāng) DOM XML 文檔進(jìn)行分析之后,不管這個文檔有多簡單或者多復(fù)雜,其中的信息都會被轉(zhuǎn)化成一棵對象節(jié)點樹(如圖 1 )。在這棵節(jié)點樹中,有一個名為 Document 根節(jié)點,所有其他的節(jié)點都是根節(jié)點的后代節(jié)點。 DOM 實際上是利用對象來把文檔模型化,這些模型不僅描述了文檔的結(jié)構(gòu),還定義了模型中對象的行為。換句話說,圖 1 中的節(jié)點不是數(shù)據(jù)結(jié)構(gòu),而是對象。 DOM 接口利用對象中包含的方法和屬性,就可以訪問、修改、添加、刪除、創(chuàng)建樹中的節(jié)點和內(nèi)容。

              在 DOM 接口規(guī)范中,有四個基本的接口: Document , Node , NodeList 以及 NamedNodeMap 。其中, Document 接口是對文檔進(jìn)行操作的入口。它是從 Node 接口繼承過來的。 Node 接口是其他大多數(shù)接口的父類,象 Documet Element , Attribute , Text , Comment 等接口都是從 Node 接口繼承過來的。 NodeList 接口是一個節(jié)點的集合,它包含了某個節(jié)點中的所有子節(jié)點。 NamedNodeMap 接口也是一個節(jié)點的集合,通過該接口,可以建立節(jié)點名和節(jié)點之間的一一映射關(guān)系,從而利用節(jié)點名就可以直接訪問特定的節(jié)點。

            clip_image001

            1

              2 .利用 DOM XML 文檔的數(shù)據(jù)進(jìn)行處理

              (1) 對 XML 某個元素的數(shù)據(jù)進(jìn)行處理

              其形式如下:

              productid.innerText=DocumentElement.childNodes(0).text; ‘ 取得 productid 的數(shù)據(jù),并將它賦給 HTML SPAN 元素的 innerText 屬性

              <SPAN ID=”productid” STYLE=”font-weight:bold”></SPAN> ‘ 顯示 productid 的數(shù)據(jù)

              (2) 對 XML 文檔中同名元素的所有數(shù)據(jù)進(jìn)行處理

              其形式如下:

              Nodelist=Document.getElementsByTagName(“productname”); ‘ 取得所有 productname 的數(shù)據(jù),并形成一個 Nodelist 集合

              For(i=0;i<Nodelist.length;++i)

              ResultHTML+=Nodelist(i).xml+”\n\n”;

              ResultDiv.innerText=ResultHTML; ‘ 用循環(huán)語句顯示所有 productname 的數(shù)據(jù)

             ?。?span lang=EN-US>3) 對 XML 元素的參數(shù)數(shù)據(jù)進(jìn)行處理

              其形式如下:

              NamedNodeMap=Document.DocumentElement.childNodes(0).attributes; ‘ 取得所有 product 的參數(shù),并形成一個 NamedNodeMap 集合

              For(i=0;i<NamedNodeMap.length;++i)

              Alert(NamedNodeMap.getNameItem(i).nodeValue); ‘ 用循環(huán)語句顯示所有 product 參數(shù)的數(shù)據(jù)

              如果在參數(shù)中包含有實體,則應(yīng)采用下列形式對 XML 的實體和實體中的標(biāo)記進(jìn)行訪問:

              Attribute=Document.DocumentElement.childNodes(0).attributes(0); ‘ 取得 product 元素的參數(shù)

              If(attribute.datatype==”entity”) ‘ 檢測參數(shù)的類型是否為 entity 類型

              Entity=Document.doctype.entities.getNameItem(attribute.nodeValue); ‘ 取得 XML 文檔的 DTD 聲明中的某個實體的名字

              DisplayText=Entity.attributes.getNameItem(“SYSTEM”).nodeValue; ‘ 取得該實體中 system 的源文件數(shù)據(jù)

              NotationName=Entity.attributes.getNameItem(“NDATA”).nodeValue; ‘ 取得該實體中 NDATA 標(biāo)記的名字

            三、結(jié)束語

              目前,有三種途經(jīng)可以在 IE5 中顯示 XML 文檔的數(shù)據(jù):樣式單、數(shù)據(jù)綁定及 DOM 。樣式單的特點是單獨設(shè)計一個用于處理顯示格式的樣式單( CSS 樣式單或 XSL 樣式單),然后在 XML 文檔中對樣式單進(jìn)行引用;而后面兩種技術(shù)的特點是利用 HTML 文檔對 XML 存貯的數(shù)據(jù)進(jìn)行顯示,這樣,可以將 XML HTML 相結(jié)合,充分利用 XML HTML 各自的優(yōu)點。

              參考書目:

             ?。?span lang=EN-US>1 Natanya Pirts . XML 輕松進(jìn)階 . 電子工業(yè)出版社 . 2000 年月 1

             ?。?span lang=EN-US>2 Jake Sturm . XML 解決方案 . 北京大學(xué)出版社 . 2001 4

             

            posted on 2009-07-27 13:10 肥仔 閱讀(507) 評論(0)  編輯 收藏 引用 所屬分類: Web-前臺

            狠狠人妻久久久久久综合蜜桃| 久久久91人妻无码精品蜜桃HD| 精品国产乱码久久久久久1区2区 | 亚洲国产成人久久综合一区77| 久久影院午夜理论片无码| 中文字幕亚洲综合久久菠萝蜜| 久久精品无码一区二区无码| 国内精品久久久久| 国产综合免费精品久久久| 亚洲精品午夜国产va久久| 欧美大香线蕉线伊人久久| 国产毛片久久久久久国产毛片| 久久久久亚洲国产| 国产欧美一区二区久久| 亚洲午夜福利精品久久| 久久电影网2021| 亚洲综合精品香蕉久久网| 久久国产成人精品国产成人亚洲| 久久亚洲精品国产亚洲老地址| a级毛片无码兔费真人久久| 国产A三级久久精品| 久久久久久毛片免费看| 久久精品aⅴ无码中文字字幕重口| 久久久久久久国产免费看| 2021精品国产综合久久| 伊人久久综合成人网| 亚洲精品国产综合久久一线| 久久99热精品| 国产美女久久久| 狠狠色噜噜狠狠狠狠狠色综合久久 | 伊人久久精品无码二区麻豆| 日韩美女18网站久久精品| 999久久久国产精品| 99久久精品国内| 久久久久久久97| 亚洲va国产va天堂va久久| 久久无码专区国产精品发布| 女同久久| 超级碰碰碰碰97久久久久| 伊人久久大香线蕉AV色婷婷色| 四虎国产精品成人免费久久|