潘海蘭
(上海第二工業(yè)大學計算機與信息學院,上海 201209)
可擴展標記語言 (eXtensible Markup Language,XML)的出現(xiàn),提高了數(shù)據(jù)描述能力和數(shù)據(jù)交換能力。它不僅可以自定義數(shù)據(jù)類型,還可以定義表示數(shù)據(jù)的方法。與超文本標記語言(HyperText Mark-up Language,HTML)相比,XML是面向內(nèi)容的。它以一種開放、自我描述的方式定義數(shù)據(jù)結構,簡單而易于掌握。MVC(Model-View-Controller)設計模式的實質(zhì)是將數(shù)據(jù)與其表現(xiàn)形式分離開來,減少各層次之間的耦合。運用這種模式,可以減少開發(fā)時間,很好地實現(xiàn)多用戶系統(tǒng)中控制邏輯與表現(xiàn)邏輯的分離,從而提高平臺的可擴展性和可重用性。
本文所論述的XML課程設計正是鍛煉學生使用MVC開發(fā)模式實現(xiàn)WEB應用程序,并掌握對XML數(shù)據(jù)的 CRUD(Create(創(chuàng)建)、Read(讀取)、Update(更新)和 Delete(刪除))操作。課程設計是目前大多數(shù)理工科院校本科課程中很重要的一個環(huán)節(jié),目的是讓學生鞏固在課堂中學到的知識點,并結合已學相關課程綜合運用這些知識,所以如何設計課程設計的內(nèi)容,對于學生掌握這門課程是至關重要的。下面主要介紹XML課程的知識點及其課程設計的內(nèi)容和考核方式。
上海第二工業(yè)大學電子商務專業(yè)開設《XML及其應用》課程已有多年。本課程是計算機類專業(yè)的一門專業(yè)選修課程。通過學習,學生應了解并掌握XML的編寫及它具體的、實際的運用;同時深刻體會XML語言給網(wǎng)絡上信息共享所帶來的區(qū)別于HTML的優(yōu)越性,掌握XML和網(wǎng)頁技術,特別是能將其與數(shù)據(jù)庫技術結合,靈活地進行信息的描述、交換和顯示。以下具體介紹該課程的設置和知識點。
作為應用型本科高校的一門課程,《XML及其應用》課程的教學階段分為授課階段和課程設計階段。其中32學時的授課階段給學生介紹設計和使用XML文檔所必需的技術,主要包括:根據(jù)給定的信息,編寫一個結構良好的XML文檔;使用文檔類型定義DTD(Document Type Definition)和XML Schema去規(guī)范XML文檔的邏輯結構;掌握驗證 XML有效性的方法;使用數(shù)據(jù)島將 XML文件嵌入到網(wǎng)頁文件中以提取XML數(shù)據(jù);使用可擴展樣式表語言XSL(eXtensible Stylesheet Language)格式化提取和顯示XML文件;了解XPATH、XQUERY和XLINK等XML高級應用;使用DOM和SAX解析器對XML文件數(shù)據(jù)進行CRUD操作,以及將XML技術與數(shù)據(jù)庫技術和其他高級語言的混合編程等[1]。
隨著XML技術的發(fā)展, XML的新應用知識和領域不斷出現(xiàn)。在大學本科低年級的專業(yè)選修課程中,我們注重對XML基礎知識點的講解,并把這些知識點結合到本課程的課程設計項目中,使得學生能對XML技術有系統(tǒng)全面的學習。當然,我們會在學生后續(xù)的高年級課程中逐步引入目前常用的XML高級技術。
(1) DTD
DTD是為XML文檔提供正規(guī)語法的一組規(guī)則約束,是一種保證XML文檔格式正確的有效方法,可以通過比較XML文檔和DTD文件來看文檔是否符合規(guī)范,元素和標簽使用是否正確。一個DTD文檔包含:元素的定義規(guī)則;元素間關系的定義規(guī)則;元素可使用的屬性、實體或符號規(guī)則。
(2) Schema
XML Schema如同DTD一樣是負責定義和描述XML文檔的結構和內(nèi)容模式。但是XML Schema從多方面改善了DTD,具有自身的優(yōu)勢,這包括:Schema基于XML,沒有專門的語法,可以像其他XML文件一樣解析和處理;Schema支持一系列的數(shù)據(jù)類型(int,float,Boolean,date等);提供可擴充的數(shù)據(jù)模型;支持綜合命名空間并且支持屬性組。
(3) XSL
XML不像HTML,它不包含任何顯示格式的信息。XSL正是專門針對XML文檔而提出來的一種規(guī)則,能夠使XML文檔得到更加有效的表現(xiàn)。XSL語法規(guī)范可以把XML源樹轉(zhuǎn)換成HTML、XML或其他文檔。XSL包含三個部分:XSLT、XPATH和XSL FO(Fomatted Object)。XSLT是一種把XML轉(zhuǎn)換為HTML的語言;XPath是一種定義XML節(jié)點路徑的語言;XSL FO則是一種定義XML顯示格式化對象的語言。課程還簡單介紹了XQUERY、XLINK和XPointer等XML高級語法。
(4) XML應用編程
XML僅僅用來存放數(shù)據(jù),其他像XML數(shù)據(jù)讀寫、添加、刪除、修改、查詢和管理等工作,都需要用戶利用XML編程接口開發(fā)相應的應用程序來完成。XML編程接口指的是應用程序操作XML文檔或XML數(shù)據(jù)所使用的API函數(shù)的集合,目前最重要最基本的接口有DOM和SAX。DOM對XML文檔結構樹中的節(jié)點對象進行訪問和操作,在很大程度上保證了各平臺之間的互操作性。SAX接口基于事件驅(qū)動模型,以順序方式訪問XML文檔,具有良好的兼容性。
(5) 數(shù)據(jù)島
XML數(shù)據(jù)島是指存在于HTML頁面中的XML數(shù)據(jù),既是一種數(shù)據(jù)顯示技術,也是一種數(shù)據(jù)傳遞技術。采用數(shù)據(jù)島作為交互手段,不僅可以使數(shù)據(jù)具備一定的語義信息,同時還能保持HTML原有的一些特色。另外,XML數(shù)據(jù)島還可以減少數(shù)據(jù)庫的壓力,主要是使查詢數(shù)據(jù)庫的用戶不再需要頻繁地訪問服務器端的數(shù)據(jù)庫,而是訪問客戶端的XML文檔,既提高了查詢速度,也減輕了服務器端的負擔。
在授課階段之后的學期末安排了三周課程設計階段來運用和鞏固授課階段講解的知識。在開設XML及其應用課程之前,整個專業(yè)的學生前期課程有JAVA程序設計基礎、數(shù)據(jù)結構(JAVA)、數(shù)據(jù)庫技術與應用、網(wǎng)頁設計基礎和JAVA高級程序設計,因此XML課程設計可以在這些基礎上要求學生完成一個相對完整的WEB應用。
這個小型的WEB應用主題由小組成員商定,要求完成整個項目的需求設計、業(yè)務流程設計、數(shù)據(jù)庫設計、系統(tǒng)實現(xiàn)和系統(tǒng)測試的全過程,使學生掌握項目開發(fā)的基本步驟和技能,并掌握單元和功能測試方法,從中考核學生的動手能力。項目中數(shù)據(jù)庫設計要求使用 XML格式存儲數(shù)據(jù),并分別使用 DTD和 Schema來進行數(shù)據(jù)定義,使用JDOM來解析XML文檔數(shù)據(jù),要求至少實現(xiàn)XML數(shù)據(jù)的CRUD操作,同時要求在項目中至少使用XSL、XPATH或XQUERY中的兩種技術。當然由于JDOM的使用在上課階段沒有介紹,課程設計的教師會用2個課時帶學生入門,并提供詳細的參考文檔。
如何把這些要求很好地結合到課程設計的項目中是很多學生的疑問。下面我們在 MVC設計模式的基礎上對XML技術的應用做一個解答。
目前眾多 Web開發(fā)框架都基于 MVC模式進行設計。MVC的主要關系是由 Observer,Composite和Strategy三個設計模式給出的。它把應用程序分成三個核心模塊:視圖(View)、模型(Model)和控制器(Controller)。三個核心模塊分別負責不同的任務,從而強制性地分開應用程序的輸入、處理和輸出。圖1顯示了這三個核心模塊的關系和功能。
圖1 MVC 設計模式Fig.1 MVC Design Pattern
從圖1[2]中我們可以總結出MVC模式的處理過程:控制器接收用戶請求,并決定處理請求的相應處理模型,在模型中通過業(yè)務邏輯調(diào)用來生成返回數(shù)據(jù),然后仍然通過控制器來選擇視圖格式化模型返回的數(shù)據(jù),并通過表示層呈現(xiàn)給用戶。
現(xiàn)在我們來解答在MVC模式下的XML技術應用。與傳統(tǒng)的MVC實現(xiàn)不同,XML可以貫穿視圖、模型和控制器三個層次,并有效地銜接各層之間的數(shù)據(jù)交互。圖2[3]顯示XML技術在每個層次的不同應用。
圖2 WEB應用結構圖Fig.2 The Chart of Web Application
(1) 視圖部分
視圖是用戶交互界面,可以接受用戶輸入數(shù)據(jù)和請求傳遞給控制器,并獲取來自模型處理后的數(shù)據(jù)顯示給用戶,但不包括在視圖上的業(yè)務流程的處理。課程設計項目中視圖層可以用 XML+XSL來實現(xiàn)數(shù)據(jù)的篩選、查詢和排序等操作,實現(xiàn)數(shù)據(jù)顯示的多元化,同時也減少對用戶瀏覽平臺的限制,可以提高頁面的靈活性。
(2) 模型部分
MVC最主要的核心是業(yè)務模型部分,它封裝了業(yè)務處理中的數(shù)據(jù)和規(guī)則,并控制著對數(shù)據(jù)的瀏覽和更新。模型層的業(yè)務流程處理過程對其它層來說是不可見操作。模型接受視圖請求的數(shù)據(jù),并返回最終的處理結果,這樣有利于模型的重構和提高重用性。課程設計項目中,模型層主要采用 Javabean組件,分為實體Beans和Action Beans兩部分,分別負責數(shù)據(jù)處理和業(yè)務處理,并結合DOM來解析XML文檔。對于數(shù)據(jù)存儲,可以直接采用XML作為載體,讓用戶可以根據(jù)自己的需求定制XML文檔,對應應用程序的實體,或通過XML映射關系型數(shù)據(jù)表,實現(xiàn)實體類的轉(zhuǎn)換。如果使用XML作為直接數(shù)據(jù)存儲,則需要通過Dom或Sax對XML數(shù)據(jù)進行解析訪問,結合XPath和XQuery技術來更好地拓展XML技術在MVC中的應用。
(3) 控制器部分
在基于MVC的項目中,模型和視圖二者是多對多的關系,它們之間的關聯(lián)要通過控制器來匹配,從而共同完成一個請求過程。也就是可以把控制層看成一個分發(fā)器,支配視圖的選擇和模型的處理,但它并不做任何的數(shù)據(jù)處理[4]。課程設計項目中的控制層,可以使用Servlet作為控制器,并結合XML技術實現(xiàn)邏輯處理的封裝。
在《XML及其應用》的課程設計階段,學生按4~6人組成一個小組,各自進行分工,培養(yǎng)團隊合作能力。課程設計階段實施主要關注以下四個主要環(huán)節(jié)。
(1) 明確任務、制定計劃
每個小組在明確課程設計任務后,選定項目主題,明確本小組課程設計的內(nèi)容和目標,并上報指導老師。項目小組成員共同商議決定如何有序地完成整個項目開發(fā)的計劃,包括收集資料、需求分析、數(shù)據(jù)庫設計、系統(tǒng)設計、編碼、系統(tǒng)測試和文檔整理等工作[4-5],最后選出項目組長負責協(xié)調(diào)小組每個成員的工作,確保項目順利完成。
(2) 文檔和編碼過程
課程設計安排在學期末三周集中的時間,全程在學校電子商務實驗室完成。這是課程設計的最重要階段,要求學生實現(xiàn)項目編碼,并進行代碼測試,同時完成相關文檔編寫。在此期間每個班級由一名指導老師全程進行答疑輔導,要求學生做好日志記載。組長負責將每位組員完成的情況和項目進度做真實的記錄,以此作為教師打分的一個依據(jù)。整個過程采用小組方式進行開發(fā),加強學生的團隊合作精神,更重要的是讓學生學會分析問題與解決問題的方法。
(3) 測試和答辯環(huán)節(jié)
學生在作品的完善過程中要求不斷測試BUG,并及時修正。最后由指導老師對每個小組開發(fā)的項目進行了驗收。驗收不僅看項目運行情況,還要求學生對完成的項目進行答辯,這樣改變了以往只看結果的評分方式。在以往考核方式下,教師往往忽略了設計過程,對學生的主觀印象分所占的比重較大,給出的成績有失客觀性,不利于調(diào)動學生的積極性。
評分標準先給設計團隊,也就是教師從設計方案的正確性和合理性、設計說明書文檔的完整性和團隊協(xié)作能力,以及學生答辯時的狀態(tài)等方面評定出團隊成績;然后再根據(jù)組內(nèi)每個成員的完成情況,進一步給出每個成員的成績。團隊的整體設計成績直接與組內(nèi)每個成員的設計成績相關聯(lián),團隊的整體成績將是團隊中成員的最高分數(shù),這樣團隊每個成員都會為團隊的成績盡自己的一份力量,使團隊成績更好。答辯形式采取按團隊進行答辯的方式,每組推選一名學生用一刻鐘的時間陳述全組課程設計情況,然后組員共同回答指導老師和另一名參加答辯教師提出的問題。當然,在團隊成員中,如果存在渾水摸魚或抄襲他人設計完成設計任務者,則設計成績按不及格論處[6]。
(4) 課程設計總結
每次課程設計結束時,相關教師必須進行經(jīng)驗總結,提出授課過程中的問題及需要改進的意見,為下次課程設計的準備提供參考。
目前在校電子商務系學生的 XML應用課程設計中采用了以上說明過程。學生通過這種形式的學習,大大提高了對XML技術的掌握程度,并能融會貫通理論課所學的知識點來完成整個項目,收效良好。
應用型本科高校對于 XML技術的教學越來越受到重視,這從近幾年不斷更新的教材就可以看出。而一門技術的掌握需要不斷地應用它。利用課程設計的手段來加深學生的理解,加強學生的實踐是一種十分有效的方法。幾年來,我校計算機與信息學院在教學中逐步提高實踐環(huán)節(jié),不斷改進課程設計的教學方法。從學生的反饋來看,課程設計不僅能鞏固學生的專業(yè)理論知識,提高實踐能力,更能提高學生項目開發(fā)技能和軟件設計水平,并使學生掌握項目測試和項目文檔編寫技術,培養(yǎng)學生團隊協(xié)作能力與應變能力,適合于應用型本科院校的教學。
[1]牛紀楨, 陸 坤, 宋 丹.以XML擴充的MVC設計模式[J].計算機工程與設計.2005, 26(12):3372-3374.
[2]盧菊平, 郭江杰.精通JSP+XML+CSS網(wǎng)絡開發(fā)混合編程[M].北京:電子工業(yè)出版社, 2006.
[3]劉愛琴, 葛君偉.基于XML模型的支持多終端的MVC模式實現(xiàn)方式 [J].計算機應用與軟件, 2005, 22(7):51-53.
[4]迪·芬克.大學課程設計自學指南:如何設計課程以促進意義深遠的學習[J].李康譯.復旦教育論壇, 2008, 1(2):23-26.
[5]羅伯特·M·戴爾蒙德.課程與課程體系的設計和評價實用指南[M].杭州:浙江大學出版社,2006.
[6]肖鵬.大學課程設計的快速整合方法模型[J].現(xiàn)代教育管理, 2009, 5:56-58.