在本文開(kāi)始部分,我們對XML這個(gè)新興的技術(shù)做了一個(gè)概述,對它的優(yōu)缺點(diǎn)進(jìn)行了分析,并對其美好的應用前景進(jìn)行了展望。在本文后半部分則對XML文檔的相關(guān)語(yǔ)法、格式做了簡(jiǎn)要的描述,并介紹了幾種有用的開(kāi)發(fā)工具。在以后的內容中,我們會(huì )全面展開(kāi),深入到XML技術(shù)內部,去探索一下這個(gè)美妙的世界!
一、顯示XML
XML文檔本身只描述數據內容,它的顯示功能由樣式單來(lái)完成。利用樣式單技術(shù)時(shí),輸出平臺不局限于顯示器,可以是打印機、繪圖儀或者是多媒體播放器。使用獨立的樣式單文件制定顯示格式的一大優(yōu)勢在于:對同一份數據文件可以制定不同的樣式風(fēng)格,應用在不同的場(chǎng)合,使數據能夠更合理、更有針對性地表現出來(lái),提高了數據的重用性。
目前,W3C正式推薦的樣式單標準有兩種: 一種是層疊樣式單CSS(Cascading Style Sheets);另一種是可擴展樣式單語(yǔ)言XSL。
CSS最初是用于制定HTML文檔顯示格式的,現在也可用來(lái)對XML文檔進(jìn)行簡(jiǎn)單的樣式規劃。CSS在HTML中的應用極為廣泛,但它在文本置換、依據文本內容而決定顯示方式、對數據進(jìn)行排序等智能化的顯示功能上略顯不足。
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/css" href="cd_catalog.css"?>
而XSL則較好地解決了CSS的這些問(wèn)題,它最常用的功能是將XML的置標轉換成為HTML的置標并顯示輸出。而且XSL還可以將XML文檔向任何其他格式的結構文檔進(jìn)行轉換。這種功能在B2B的商務(wù)模式中有著(zhù)很好的應用前景。
XSL利用模式匹配的方法,選擇XML文檔中需要處理的元素/屬性,再針對這些特定的對象制定相應的轉換規則。借助XSL,我們還可以添加新的元素/屬性,對所有元素/屬性進(jìn)行重新排序、循環(huán)處理、條件判斷等程序化的控制,使其適應各種復雜的需求。
在XML文檔中引用XSL的格式如下:
<?xml-stylesheet type=“text/xsl” href=“Employees.xsl” ?>;
一個(gè)XML文檔只能引用一個(gè)XSL樣式單。XML解析器在處理XML文檔時(shí),遇到處理指令后,會(huì )載入指定的XSL樣式單,然后根據其中的規則進(jìn)行相應的轉換處理。
二、綁定XML
Web服務(wù)器與客戶(hù)機之間的數據傳遞方式有三種: HTML頁(yè)面、XML文檔以及XML數據島。其中,XML數據島通過(guò)特定的標簽把XML數據直接嵌入到HTML文檔中。采用數據島作為交互手段,不僅可以使數據具備一定的語(yǔ)義信息,同時(shí)還能保持HTML原有的一些特色,如利用用戶(hù)端腳本程序實(shí)現動(dòng)態(tài)信息交換等。
XML數據島的實(shí)現方法是在HTML文檔中使用<XML>;標簽。代碼的嵌入方式有兩種: 直接嵌入(如例1)和外部引用(如例2)。
例1:
<XML ID=“MyXMLData”>;
<?xml version=“1.0” ?>;
……XML definitions……
</XML>;
例2:
<XML ID=“MyXMLData” SRC=“http://www.microsoft.com/MyXMLData.xml”>;
</XML>;
在插入數據島之后,就可以把XML中的元素同HTML元素鏈接在一起,利用HTML的表現手法顯示XML數據,這種鏈接關(guān)系被稱(chēng)為綁定。綁定的方式按照HTML元素的性質(zhì)可以分為兩種:?jiǎn)沃祵ο蠛捅砀駥ο蟆?nbsp;
單值對象的數據綁定需要在HTML元素中設置DATASRC屬性和DATAFLD屬性。DATASRC屬性是區分XML數據島對象的唯一標識,并且必須加上前綴“#”;DATAFLD屬性則標識了數據島中的元素對象。例3就是把一個(gè)HTML文本輸入框與<salary>;元素進(jìn)行了綁定。
例3:
<INPUT TYPE=“TEXT”
DATASRC=“#MyXMLData”
DATAFLD=“salary”>;
至于表格對象,主要是與HTML中的<TABLE>;標簽綁定。一般地,可以借助DSO(Data Source Object,數據源對象)等ActiveX控件更方便、有效地處理表格數據。具體使用方法在以后的內容中將做詳細介紹。
XML數據島可以綁定到HTML元素上(比如表格)。
在下面的例子中,一個(gè)XML數據島(ID=cdcat)被從外部XML文檔載入。一個(gè)HTML的表格綁定到此數據島上。HTML表格內部的span元素使用datafld屬性和XML文檔相應的XML元素相互綁定。
<html>
<body>
<xml id="cdcat" src="cd_catalog.xml"></xml>
<table border="1" datasrc="#cdcat">
<tr>
<td><span datafld="ARTIST"></span></td>
<td><span datafld="TITLE"></span></td>
</tr>
</table>
</body>
</html>
三、訪(fǎng)問(wèn)XML
Document Object Model(文檔對象模型)簡(jiǎn)稱(chēng)為DOM,是對Web文檔進(jìn)行應用開(kāi)發(fā)、編程的應用程序接口(API),是W3C公布的一種跨平臺的、與語(yǔ)言無(wú)關(guān)的接口規范。
DOM采用對象模型和一系列的接口來(lái)描述XML文檔的內容和結構,即利用對象把文檔模型化。這種對象模型實(shí)現的基本功能包括:
● 描述文檔表示和操作的接口;
● 接口的行為和屬性;
● 接口之間的關(guān)系以及互操作。
DOM對結構化的XML文檔進(jìn)行解析,文檔中的指令、元素、實(shí)體、屬性等所有個(gè)體都可以用對象模型表示。整個(gè)文檔的邏輯結構類(lèi)似一棵樹(shù),生成的對象模型就是樹(shù)的節點(diǎn),每個(gè)對象同時(shí)包含了方法和屬性。
利用DOM,開(kāi)發(fā)人員可以進(jìn)行動(dòng)態(tài)地創(chuàng )建XML文檔、遍歷結構、添加/修改/刪除內容等操作。DOM面向對象的特性,使人們在處理和XML解析相關(guān)的事務(wù)時(shí)節省大量精力,是一種符合代碼重用思想的強有力編程工具。
四、XML解析器
如果瀏覽器使用javascript作為腳本語(yǔ)言,那么利用下面的代碼可以創(chuàng )建XML文檔對象:
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
如果瀏覽器使用VBScript作為腳本語(yǔ)言,那么利用下面的代碼可以創(chuàng )建XML文檔對象:
set xmlDoc=CreateObject("Microsoft.XMLDOM")
如果在A(yíng)SP程序中使用VBScript腳本語(yǔ)言,那么就可以使用下面的代碼形式:
set xmlDoc=Server.CreateObject("Microsoft.XMLDOM")
將XML文檔載入解析器
使用腳本代碼可以將XML文檔載入解析器。
下面的代碼可以將一個(gè)XML文檔載入解析器:
<script type="text/javascript">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
// ....... processing the document goes here
</script>
第二行代碼創(chuàng )建Microsoft XML解析器的實(shí)例。
第三行代碼關(guān)閉異步載入,確保XML解析器在把XML文檔完全載入以前不會(huì )對XML文檔進(jìn)行解析。
第四行則告訴解析器需要載入的XML文檔名字是note.xml。
把純XML文檔由字符載入解析器
解析器可以從一個(gè)文本字符串中載入XML文本。
下面的代碼演示了將文本字符串載入解析器:
<script type="text/javascript">
var text="<note>"
text=text+"<to>Tove</to><from>Jani</from>"
text=text+"<heading>Reminder</heading>"
text=text+"<body>Don‘t forget me this weekend!</body>"
text=text+"</note>"
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.loadXML(text)
// ....... processing the document goes here
</script>
注意這里載入字符串使用的是"loadXML()"方法)(而不是前面用過(guò)的"load()"方法), "loadXML()"是用于載入字符串,"load()"是用于載入XML文檔。
使用javascript語(yǔ)言顯示XML數據
可以使用javascript語(yǔ)言來(lái)顯示XML數據。
javascript (或者 VBScript)可以從XML文檔中導入數據,并將這些數據在HTML頁(yè)面中顯示出來(lái)。
<html>
<head>
<script type="text/javascript"
for="window" event="onload">
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("xml_note.xml")
nodes=xmlDoc.documentElement.childNodes
to.innerText= nodes.item(0).text
from.innerText= nodes.item(1).text
header.innerText=nodes.item(2).text
body.innerText= nodes.item(3).text
</script>
<title>HTML using XML data</title>
</head>
<body bgcolor="yellow">
<h1>W3Schools.com Internal Note</h1>
<b>To: </b>
<span id="to"> </span>
<br />
<b>From: </b>
<span id="from"></span>
<hr>
<b><span id="header"></span></b>
<hr>
<span id="body"></span>
</body>
</html>
聯(lián)系客服