【摘要】XML以其自身的簡單性、可擴展性和標準化性等特點,將在遠程網絡教育中發(fā)揮重大的作用。本文討論了應用XML文檔作為網絡考試中數(shù)據(jù)存儲方式的實現(xiàn),以及如何處理對試卷XML文檔中節(jié)點數(shù)據(jù)存取和網絡考試中意外斷線后考生答案恢復。
【關鍵詞】XML;網絡考試;答案恢復
【中圖分類號】G434【文獻標識碼】B 【論文編號】1009—8097 (2007) 10—0064—03
隨著遠程網絡教育的發(fā)展,網絡考試成了困擾遠程教育的難題。在WEB上建立一套支持大規(guī)模在線考試的管理工具是很有必要的。XML在許多方面有著很大優(yōu)勢,利用它作為網絡考試數(shù)據(jù)的存儲方式,利用DOM接口可以方便地去訪問這些數(shù)據(jù)。運用這些技術,能夠較好地完成網絡考試試卷的表示和作答,并可實現(xiàn)突然斷線后考生答案的恢復。
一 XML功能特點
可擴展置標語言XML(Extensible Markup Language)是一種非常簡單、靈活的文本格式, 它是HTML的補充,為HTML擴展更多功能,其功能特點為:
1)XML允許各個不同的行業(yè)根據(jù)自己獨特的需要制定自己的標記,而且這些標記不必僅限于對于顯示格式的描述。
2)在XML中,顯示樣式從數(shù)據(jù)信息中抽取出來,放在樣式單文件中,數(shù)據(jù)和顯示樣式分離。
3)XML遵循嚴格的語法要求。不但要求標記配對、嵌套,而且還要求嚴格遵守DTD或SCHEMA的規(guī)定。
4)XML可以在不同的操作系統(tǒng),不同的數(shù)據(jù)庫系統(tǒng)之間作為交流媒介,方便網絡客戶在不同的數(shù)據(jù)源之間傳遞信息。
5)使用XML可以把數(shù)據(jù)處理的任務交給了客戶, 而服務器只需將數(shù)據(jù)封裝成XML文檔,傳送給客戶端即可,這樣大大減輕了服務器端的負荷,便于將大量運算負荷分布在客戶端。
6)使用XML,可以把XML文檔拆分成為多個文件,便于對信息進行編輯、裁減以適應不同用戶的需要。
二 試卷的XML表示和處理方法
1 試卷結構的XML表示
把網絡考試中可能涉及的考題類型按照答題方式的不同進行分類、總結,把它歸結為8個模板。例如單項選擇題和判斷題都是從幾個或對錯兩個選項中選擇一個合適的答案,因而這些題型可采用相同的答題方式,從而使用相同的模板,所以有些不同的題型我們采用了相同的模板。圖1是一份包含涉及的各種題型的測試所使用試卷paper.xml在XML SPY V5.0中的顯示圖。在此XML文檔中,考卷涉及的各種數(shù)據(jù)被保存在自定義的標簽中。
<!ELEMENT 大題 ( 小題+ ) >
<!ATTLIST 大題 模板 CDATA #REQUIRED >
<!ATTLIST 大題 序號 CDATA #REQUIRED >
試卷XML的文檔paper.xml類型定義(DTD)如下:
<!—paper.dtd-->
<?xml version=\"1.0\" encoding=\"GB2312\" ?>
<!-- edited with XML SPY V5.0(http://www.xmlspy.com)-->
<!ELEMENT 試卷 ( 試卷組成 ) >
<!ELEMENT 試卷組成 ( 大題+ ) >
<!ATTLIST 大題 標題 CDATA #REQUIRED >
<!ELEMENT 小題 ( 題干, (諸選項 | 空數(shù) | 子題)* ) >
<!ATTLIST 小題 模板 CDATA #REQUIRED >
<!ATTLIST 小題 序號 CDATA #REQUIRED >
<!ELEMENT 題干 ( #PCDATA ) >
<!ELEMENT 諸選項 ( 選項+ ) >
<!ELEMENT 選項 ( #PCDATA ) >
<!ATTLIST 選項 序號 CDATA #REQUIRED >
<!ELEMENT 空數(shù) ( #PCDATA ) >
<!ATTLIST 空數(shù) 長度 NMTOKEN #REQUIRED >
<!ELEMENT 子題 ( 題干?,諸選項) >
<!ATTLIST 子題 序號 CDATA #REQUIRED >

2 試卷中多媒體和數(shù)學公式的處理
試卷中對多媒體的處理是把其數(shù)據(jù)表示方式存儲到
例如XML文檔中對圖片的存儲方式是記錄鏈接的圖片文件名,圖片存放到某個指定的目錄中,形式如下所示:?> 。

<![CDATA[
<m:math><m:mrow><m:msqrt>
<m:mrow><m:msup><m:mrow>
<m:mo stretchy='1'>
(</m:mo><m:mi>a</m:mi><m:mi>b</m:mi><m:mostretchy='1'>)
</m:mo></m:mrow><m:mn>2</m:mn></m:msup><m:mo>+</m:mo><m:msup>
<m:mi>b</m:mi>
<m:mn>2</m:mn>
</m:msup></m:mrow></m:msqrt></m:mrow></m:math>
]]>
三 XML文檔的解析
1 XML文檔的解析方法
目前,解決XML瀏覽問題的方法有兩種,一種是在傳遞XML文件之前先將它轉換為一個HTML文件,然后再傳輸這個轉換后的文件;另一種是直接傳遞XML文件,顯示時在線進行轉換。
XML文檔實質上是一個文本文件,因此在需要訪問文檔中的內容時,必須首先書寫一個能夠識別XML文檔信息的文本文件閱讀器,也就是通常所說的XML語法分析器,由它來幫助解釋XML文檔并提取其中的內容。應用程序不直接對XML文檔進行操作,而是首先由XML分析器對XML文檔進行分析,然后,應用程序通過XML分析器所提供的DOM API或SAX API對分析結果進行操作,從而間接實現(xiàn)了對XML文檔的訪問。因為處理的XML文檔并不是一個大型的文檔,所以采用DOM API對XML文檔進行分析。
DOM API提供了一種通過分層對象模型來訪問XML文檔信息的方式,這些分層對象模型依據(jù)XML的文檔結構形成了一棵節(jié)點樹。無論XML文檔中所描述的是什么類型的信息,即便是制表數(shù)據(jù)、項目列表或一個文檔,利用DOM所生成的模型都是節(jié)點樹的形式。也就是說,DOM強制使用樹模型來訪問XML文檔中的信息。由于XML本質上就是一種分層結構,所以這種描述方法是相當有效的。
2 DOM API在考試系統(tǒng)中的應用
下面采用一個考生答案的XML文檔answer.xml來說明DOM樹。XML文檔如下:
<!—answer.xml-->
<?xml version=\"1.0\" encoding=\"gb2312\" ?>
<考生答案>
<答案 序號=\"1\">
<題號>1_1</題號>
<內容><![CDATA[A]]></內容>
</答案>
<答案 序號=\"2\">
<題號>3_4_1</題號>
<內容>
<![CDATA[Test “Test”]]>
</內容>
</答案>
</考生答案>
DOM在內存中構建如圖2所示的DOM樹。

XML 文檔的通過DOM解析利用JAXP包,Jaxp支持W3C所推薦的DOM 2,DOM。通過下面的方法,可以得到方法DOM樹的document。
首先建立一個解析器產生器DocumentBuilderFactory,以利用這個產生器來獲得一個具體的解析器對象。為了創(chuàng)建與具體解析器無關的程序,當DocumentBuilderFactory類的靜態(tài)方法newInstance()被調用時,它根據(jù)一個系統(tǒng)變量來決定具體使用哪一個解析器。又因為所有的解析器都服從于JAXP所定義的接口,所以無論具體使用哪一個解析器,代碼都是一樣的。所以當在不同的解析器之間進行切換時,只需要更改系統(tǒng)變量的值,而不用更改任何代碼。當獲得一個產生器對象后,使用它的靜態(tài)方法newDocumentBuilder()方法可以獲得一個DocumentBuilder對象,這個對象代表了具體的DOM解析器。DocumentBuilder的parse()方法接受一個XML文檔名作為輸入?yún)?shù),返回一個Document對象,這個Document對象就代表了一個XML文檔的樹模型。以后所有的對XML文檔的操作,都與解析器無關,直接在這個Document對象上進行操作。
DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
db = dbf.newDocumentBuilder();
document = db.parse(new File(filename));
得到doucment接口對象后,根據(jù)圖各節(jié)點的關系,我們可以方便地訪問到各個節(jié)點的數(shù)據(jù)。
四 斷線恢復的實現(xiàn)
網絡考試非常嚴謹?shù)沫h(huán)節(jié),當意外情況發(fā)生,比如網絡中斷或者機器發(fā)生故障,學生退出當前考試狀態(tài)后,再次登錄參加考試時,考試系統(tǒng)應該為學生保留已經完成的答案數(shù)據(jù),并把它們重新調用并和考卷組織起來,這樣考生就可以繼續(xù)進行考試。因此,考試系統(tǒng)必須實現(xiàn)答案恢復功能。
實現(xiàn)考試答案恢復的關鍵技術是利用XML文檔保存的試卷數(shù)據(jù)和答案數(shù)據(jù)的考試進行斷線后的答案恢復的方案。
網絡考試系統(tǒng)中,考點所使用的考卷,學生的答案都是采用XML文檔格式保存的,試卷文檔如圖1paper.xml所示,答案結構如answer.xml所示。學生登錄進行考試時,程序給每個學生生成一個ID,通過DOM API把paper.xml中的節(jié)點數(shù)據(jù)讀出來,然后根據(jù)題號(題號組成方法:大題序號_小題序號_子題序號)到answer.xml中尋找是否有此道題的答案存在,如果存在則用同樣的方法讀出該節(jié)點數(shù)據(jù),不存在就返回空字符。然后我們把兩者數(shù)據(jù)結合一起使用Java程序寫為一個JSP文檔,形成JSP文檔的過程在Java程序中的處理相當于一個字符串讀寫的過程,處理過程比較簡單。JSP文檔中一起寫入的還有JavaScript腳本,JvaScript腳本以純文本方式存在并通過Java程序添加到JSP文檔的最后,這樣就形成完整的一份能用于考試的試卷。學生使用鍵盤或鼠標進行答題時,光標失去焦點JavaScript腳本就觸發(fā)遞交當前答案,Java程序把遞交的字符串寫入到answer.xml文件中,字符串按XML序列流方式寫入。下面是一個具體的把XML文檔寫入到服務器硬盤進行保存的實現(xiàn)方法。
OutputFormat format = new OutputFormat();
format.setEncoding(\"GB2312\"); //設置Encoding
//把內存中XML文檔寫入到硬盤,flag標志為true時追加寫入,1時清空重寫
public void writeXml(Document document,String filename)
{
try
{
FileWriter writer = new FileWriter(filename,flag);
XMLSerializer serializer = new XMLSerializer(writer, format);
serializer.serialize(document);
writer.flush();
writer.close();
}catch(IOException e)
{System.out.print(\"Error: \" + e);}
}
五 結論
應用XML文檔可以實現(xiàn)網絡考試中數(shù)據(jù)的存儲,并能夠處理試卷規(guī)范XML文檔節(jié)點數(shù)據(jù)的存儲,也能夠解決網絡考試中意外斷線后考生答案的恢復問題。
參考文獻
[1]Brian E#8226;Travis.XML and SOAP Programming for BizTalk Servers[M]. EI翻譯組譯.北京:機械工業(yè)出版社,2001.
[2]]Bruce Eckel.Thinking in JAVA[M] .京京工作室譯.北京:機械工業(yè)出版社,1999.
[3]Chuck White,Liam Quin,Linda Burman.XML從入門到精通[M].周生炳等譯.北京:電子工業(yè)出版社,2002.
[4]XML中國論壇[EB/OL].www.xml.net.cn
[5]飛思科技產品研發(fā)中心.Java Web服務應用開發(fā)詳解[M] .北京:電子工業(yè)出版社,2002.
Besearch on the Network Examination Based on XML
FU yu
(Henan Institute of science and Technology , Xinxang , Henan 453003)
Abstract: XML technology is more popular nowadays. Owing to its many advantages including simplify, extensibility and standardization, XML will exert a profound effect in the network education. This paper discusses the application of XML document as a mean to implement the mode of data storing, how to deal with loading and saving of the node data of XML document and how to resume the students’ answers when the network breaks suddenly.
Key Words: XML; Network Examination; Answer Resume