首先如果要使用資料繫結技術來展現資料,必須要在網頁中建立XML的資料來源物件(Data Source Object),文中簡稱DSO,建立DSO的方式有兩種,第一種是使用Java Applet連結到一份Books.xml檔案資料,範例如下: |
< HTML > < HEAD > | < APPLET CODE="com.ms.xml.dso.XMLDSO.class"
id="xmldso" width=0 height=0 >
< PARAM NAME="URL" VALUE="Books.xml" > < /APPLET > | < /HEAD > < BODY >
< /BODY > < /HTML > | JavaApplet.htm |
第二種方式是建立XML DataIsland(XML資料島),範例如下: |
< HTML > < HEAD > | < xml id="xmldso" src="Books.xml" >< /xml > | < /HEAD > < BODY >
< /BODY > < /HTML > | XMLDataIsland1.htm |
或者直接將XML資料崁入DataIsland中,範例如下: |
< HTML > < HEAD > | < xml id="xmldso" > < ?xml version="1.0"? > < booklist >
< book >
< title >The Gourmet Microwave< /title >
< isbn >72-80081-082< /isbn >
< publisher >New Moon Books< /publisher >
< price >9.95< /price >
< details >Details.asp?isbn=72-80081-082< /details >
< author >Charlotte M. Cooper< /author >
< author >Shelley B. Burke< /author >
< author >Regina P. Murphy< /author >
< /book > < /booklist > < /xml > | < /HEAD > < BODY >
< /BODY > < /HTML > | XMLDataIsland2.htm |
這兩種方式都能建立DSO,不過第二種方式,也就是XML DataIsland的語法只有在IE5以後的版本才有支援,在這邊預設讀者都有IE5可以測試。建立好DSO,先看一下DSO裡面的資料,也就是連結到的XML檔案Books.xml,如下列檔案內容: |
|
XML檔案中包含五本書,每本書都有一個以上的作者。接下來要如何讓HTML標籤來展現資料呢?其實很簡單,例如下面的範例,僅僅在標籤內加上兩個屬性設定(datasrc與datafld),第一筆資料就能夠繫結在標籤內了: |
< HTML > < HEAD > < xml id="xmldso" src="Books.xml" > < /xml > < /HEAD > < BODY >
書號:< span | datasrc="#xmldso" datafld="isbn" | >< /span >< br > | 書名:< TEXTAREA rows=2 cols=20 id=textarea1 name=textarea1
| datasrc="#xmldso" datafld="title" | >< /TEXTAREA >< br > | 出版商:< INPUT type="button" value="Button" id=button1 name=button1
| datasrc="#xmldso" datafld="publisher" | >< br > |
價格:< INPUT type="text" id=text1 name=text1 | datasrc="#xmldso" datafld="price" | > | < /BODY > < /HTML > | DataIsland3.htm |
結果圖如下: |
 |
原來datasrc屬性就是指定DSO,而datafld就是指定欄位,並且個別用不同的標籤來展現,讀者就會發現資料繫結的彈性以及方便了。例如價格欄位資料會繫結到TextBox的Value屬性,所以結果可以看到資料便展現在TextBox裡面。 |
但是有一點必須要注意,並不是所有的HTML標籤都支援這兩個屬性,在以下的表格中列出支援的HTML標籤以及資料繫結後所對應的標籤屬性: |
HTML標籤 | 資料繫結標籤屬性 | A | href | APPLET | property value via PARAM | BUTTON | innerText, innerHTML | DIV | innerText, innerHTML | FRAME | src | IFRAME | src | IMG | src | INPUT TYPE=BUTTON | innerText, innerHTML | INPUT TYPE=CHECKBOX | checked | INPUT TYPE=HIDDEN | value | INPUT TYPE=PASSWORD | value | INPUT TYPE=RADIO | checked | INPUT TYPE=TEXT | value | LABEL | innerText, innerHTML | LEGEND | innerText, innerHTML | MARQUEE | innerText, innerHTML | SELECT | obj.options(obj.selectedIndex).text | SPAN | innerText, innerHTML | TEXTAREA | value |
|
如上表span標籤在設定完datasrc及dtafld之後,資料會存放在標籤的innerText或innerHTML屬性中,這代表資料能夠以TEXT純文字展現或以HTML展現。資料繫結之後預設使以純文字展現,也就是存放在innerText屬性,例如改寫Books.xml的第一筆資料的isbn欄位如下: |
< book >
< title >The Gourmet Microwave< /title >
| < isbn > | < | B | < | 72-80081-082 | < | /B | < | ;< /isbn > |
< publisher >New Moon Books< /publisher >
< price >9.95< /price >
< details >Details.asp?isbn=72-80081-082< /details >
< author >Charlotte M. Cooper< /author >
< author >Shelley B. Burke< /author >
< author >Regina P. Murphy< /author > < /book > |
|
其中「<」代表「< 」符號,「&glt;」代表「 >」符號,主要是因為XML資料中大於和小於符號是保留字,所以必須以其他方式表現,此時再度執行DataIsland3.htm會得到以下結果: |
 |
但是這不是想要的結果,主要的目的是希望書號欄位資料以粗體展現,此時必須配合另一個HTML屬性,也就是修改DataIsland3.htm的span標籤,再加上一個屬性dataformatas設定為HTML。此時資料繫結後,資料便會存放在span標籤的innerHTML屬性,也就是以HTML方式展現,如下程式碼及結果: |
書號:< span datasrc="#xmldso" datafld="isbn" | dataformatas="HTML" | >< /span >< br > |
|
|
 |