亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于XML的試題庫(kù)試卷輸出的設(shè)計(jì)與實(shí)現(xiàn)

        2007-04-12 00:00:00
        中國(guó)教育信息化 2007年10期

        摘 要:本文主要討論在基于XML的試題庫(kù)系統(tǒng)中,通過(guò)XSL轉(zhuǎn)換方便快速地輸出試卷的方法和實(shí)現(xiàn)過(guò)程。通過(guò)此方法,不僅可以很好地控制試卷的版面設(shè)計(jì),而且使程序、試卷數(shù)據(jù)和樣式分離,在輸出試卷時(shí)具有很大的靈活性,可以輸出多種格式的試卷。

        關(guān)鍵詞:試卷 輸出 格式 XML XSL FOP

        中圖分類號(hào):G434 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1673-8454(2007)10-0070-03

        一、引言

        隨著計(jì)算機(jī)技術(shù)在教學(xué)中的應(yīng)用越來(lái)越廣泛,試題庫(kù)系統(tǒng)的建設(shè)也越來(lái)越重要。在試題庫(kù)系統(tǒng)中,很重要的一個(gè)功能是試卷輸出。由于Office等軟件具備所見(jiàn)即所得、易于操作等特點(diǎn),許多試題庫(kù)系統(tǒng)基于這類軟件對(duì)試卷進(jìn)行版面設(shè)計(jì)及輸出。[1] 這種方式雖然易于實(shí)現(xiàn),但在使用時(shí)不能脫離軟件獨(dú)立運(yùn)行,在沒(méi)有安裝這類軟件的計(jì)算機(jī)上無(wú)法使用或是不能輸出試卷,而且輸出試卷的格式也受限于其依賴的編輯軟件。另一方面,隨著Internet的廣泛應(yīng)用,基于XML的網(wǎng)絡(luò)試題庫(kù)系統(tǒng)越來(lái)越多,這些系統(tǒng)更多地關(guān)注于試題的存儲(chǔ)與傳輸,對(duì)所生成試卷的輸出問(wèn)題很少提及。[2] 而在實(shí)際試題庫(kù)應(yīng)用中,對(duì)試卷輸出并打印是有很大需求的。

        由此,我們?cè)谘邪l(fā)大學(xué)英語(yǔ)試題庫(kù)系統(tǒng)時(shí)對(duì)試卷輸出進(jìn)行了有益的嘗試,實(shí)現(xiàn)了基于XML的試題庫(kù)試卷的快速靈活的輸出。本文主要討論XML試題庫(kù)試卷的輸出過(guò)程及具體實(shí)現(xiàn)。

        二、XML格式轉(zhuǎn)換的流程

        由于XML格式不僅可擴(kuò)展性強(qiáng)、內(nèi)容與樣式分離、以文本格式進(jìn)行存儲(chǔ)和傳輸、具有良好的開(kāi)放性、跨平臺(tái)性和可操作性[3],而且與Word格式相比,采用XML格式來(lái)表示試卷、試題、參考答案文件有很多優(yōu)點(diǎn),更適合試題庫(kù)的網(wǎng)絡(luò)應(yīng)用的需求。[4] 所以我們采用XML作為試題庫(kù)系統(tǒng)中試題和試卷的存儲(chǔ)格式。這樣,試卷輸出的關(guān)鍵是將由XML表示的試卷文檔轉(zhuǎn)換成其他格式的文檔供修改或打印。其轉(zhuǎn)換過(guò)程如圖1所示:

        圖1 XML格式轉(zhuǎn)換過(guò)程

        XML源文檔以XML格式存儲(chǔ)了要轉(zhuǎn)換輸出的試卷內(nèi)容??蓴U(kuò)展標(biāo)記語(yǔ)言XML,可以使用自己創(chuàng)建的標(biāo)記存儲(chǔ)數(shù)據(jù)。在我們所開(kāi)發(fā)的試題庫(kù)系統(tǒng)中,試題和試卷都是基于XML存儲(chǔ)的,其中音頻和圖片也可以編碼后以XML格式存儲(chǔ)。[5]

        XSL樣式表定義了輸出的版面設(shè)計(jì)和對(duì)輸出內(nèi)容的選取??蓴U(kuò)展樣式表語(yǔ)言XSL由XSLT、XPath和XSL-FO組成。[6] 可擴(kuò)展樣式表語(yǔ)言轉(zhuǎn)換XSLT提供一套規(guī)則,用于將一組元素描述的XML數(shù)據(jù)轉(zhuǎn)換為另一組元素描述的文檔,或者將該數(shù)據(jù)轉(zhuǎn)換為一種自定義的文本格式。在這里,我們通過(guò)XSLT,將用XML表示的試卷轉(zhuǎn)換為由XSL-FO表示的格式化對(duì)象。XPath是XML路徑語(yǔ)言,用于對(duì)XML文檔中的元素進(jìn)行定位,由XSLT使用。格式化對(duì)象的可擴(kuò)展樣式表語(yǔ)言XSL-FO定義了在屏幕或紙張或其他媒介上如何顯示數(shù)據(jù)。在我們的試題庫(kù)系統(tǒng)中,輸出的試卷排版布局由XSL-FO表示。

        處理器讀取XML源文檔和XSL樣式表,并轉(zhuǎn)換輸出PDF、RTF、HTML等格式的文檔。在多種轉(zhuǎn)換處理工具中,我們選擇了FOP。FOP是Apache XML Project提供的一種轉(zhuǎn)換工具,使用它可以便捷地將XML文檔轉(zhuǎn)換為PDF、RTF等格式。[7] 但是由于FOP對(duì)于PDF和RTF的支持不完全相同,所在要針對(duì)PDF和RTF對(duì)樣式表分別作修改,才能輸出美觀的文檔。

        由圖1可以看出,整個(gè)轉(zhuǎn)換過(guò)程就是將表示內(nèi)容的XML文檔和表示樣式的XSL文檔提交給處理器,經(jīng)處理器轉(zhuǎn)換得到輸出結(jié)果為PDF、RTF等格式的文檔。

        三、基于XML的試卷輸出實(shí)現(xiàn)

        在輸出試卷時(shí),我們首先將試題庫(kù)組卷模塊中生成的試卷保存為XML文檔,然后根據(jù)要輸出的試卷格式選擇相應(yīng)的樣式表,把XML文檔和樣式表交給處理程序FOP處理后將試卷輸出為PDF或RTF格式。本節(jié)先介紹我們采用的試卷結(jié)構(gòu),然后介紹對(duì)應(yīng)的樣式表,最后就實(shí)現(xiàn)過(guò)程中遇到的問(wèn)題給出解決方案。

        1.試卷結(jié)構(gòu)

        在本試題庫(kù)系統(tǒng)中,試題和試卷都存儲(chǔ)為XML結(jié)構(gòu)。通過(guò)擴(kuò)展XML標(biāo)記,定義了適合本題庫(kù)系統(tǒng)的試題和試卷XML結(jié)構(gòu)。試卷的具體結(jié)構(gòu)為:

        <paper name="Test Paper" score="100">

        <part type="Listening" id="1">

        <section direction="Section Direction" type="Statements" id="1">

        <assessmentItem id="1">

        ……

        </assessmentItem>

        <assessmentItem id="2">

        ……

        </assessmentItem>

        </section>

        <section direction="Section Direction" type="Short Conversations" id="2">

        <assessmentItem type="SentenceListening" id="1" />

        ……

        </section>

        <part type="Reading Comprehension" id="2">

        ……

        </part>

        ……

        </paper>

        試卷(Paper)由幾個(gè)部分(Part)組成,每個(gè)部分由一節(jié)或幾節(jié)(Section)組成,每一節(jié)由若干試題(Item)組成。對(duì)于試題,由于題型的不同,包含不同的元素?;镜脑囶}結(jié)構(gòu)為:

        <assessmentItem type="ReadingChoice" id="2">

        <content >

        <question id="36">

        <prompt>The passage is meant to ______.</prompt>

        <choices>

        <choice id="A" />

        <choice id="B" />

        <choice id="C" />

        <choice id="D" />

        </choices>

        <answer><value>A</value></answer>

        </question>

        <question id="37">

        </question>

        </assessmentItem>

        試題的主要元素有題干、問(wèn)題、答案。對(duì)于聽(tīng)力題,需要有聲音文件和聽(tīng)力腳本。

        2.樣式表

        與試卷對(duì)應(yīng)的XSLT樣式表結(jié)構(gòu)為:

        <xsl:stylesheet>

        <xsl:template match="/">

        <fo:root >

        <fo:layout-master-set>

        <fo:simple-page-master master-name="TestBanks">

        </fo:simple-page-master>

        </fo:layout-master-set>

        <fo:page-sequence master-reference="TestBanks">

        <fo:flow flow-name="xsl-region-body">

        <fo:block>

        <xsl:call-template name="paper_test"/>

        </fo:block>

        <fo:block>

        <xsl:call-template name="paper_answersheet"/>

        </fo:block>

        <fo:block>

        <xsl:call-template name="paper_key"/>

        </fo:block>

        <fo:block>

        <xsl:call-template name="paper_Script_of_Listening"/>

        </fo:block>

        </fo:flow>

        </fo:page-sequence>

        </fo:root>

        </xsl:template>

        </xsl:stylesheet>

        在試卷的XML文檔中,題目?jī)?nèi)容、答案以及聽(tīng)力原文是在一起的,但在輸出的試卷中,要將其分成三個(gè)不同的部分,而且試卷輸出的同時(shí)要輸出答題紙,所以要對(duì)輸入的XML試卷進(jìn)行四遍掃描,每一遍分別應(yīng)用不同的模板,取出所需要處理的信息進(jìn)行轉(zhuǎn)換輸出。

        試題冊(cè)模板首先輸出試卷名稱和注意事項(xiàng)等內(nèi)容,然后遍歷試卷中的每一部分節(jié)點(diǎn),根據(jù)每部分的名稱來(lái)應(yīng)用對(duì)應(yīng)的部分模板。每部分的模板先輸出標(biāo)題,然后遍歷本部分中的所有節(jié),對(duì)不同的節(jié)應(yīng)用對(duì)應(yīng)的節(jié)模板。節(jié)模板先輸出節(jié)標(biāo)題和本節(jié)的答題要求,然后遍歷本節(jié)的所有試題,應(yīng)用對(duì)應(yīng)的試題模板對(duì)試題內(nèi)容進(jìn)行輸出。對(duì)于不同的試題,根據(jù)其所具有的元素,選擇要在試題冊(cè)上顯示的內(nèi)容輸出。

        答題卡模板、答案模板和聽(tīng)力腳本模板同樣采用上面按層次調(diào)用的方法,逐步應(yīng)用部分、節(jié)和試題模板,輸出自己所需要呈現(xiàn)的內(nèi)容。所有的內(nèi)容都輸出到fo:block內(nèi)容塊中。

        3.轉(zhuǎn)換過(guò)程中遇到的問(wèn)題及解決辦法

        設(shè)計(jì)好樣式表以后,就可以使用FOP對(duì)XML試卷進(jìn)行轉(zhuǎn)換輸出了。在輸出過(guò)程中,筆者在字體、試卷中的特殊格式等方面遇到以下主要問(wèn)題需要解決。

        (1)字體設(shè)置

        由于試卷上大部分內(nèi)容是英文,需要用英文字體來(lái)顯示,但是也會(huì)出現(xiàn)一些漢字,需要用漢字字體來(lái)顯示,而由于FOP的PDF輸出不支持多字體,所以采用英文字體輸出后應(yīng)該是漢字的內(nèi)容就成了“#”號(hào)。為了解決這一問(wèn)題,需要自定義字體。我們制作了新的字體文件TestBank,將英文字體和漢字字體組合在一起形成一種新的字體。制作好字體文件后,還要生成字體映射文件TestBank.xml,并在FOP的配置文件中進(jìn)行注冊(cè)。這樣,在樣式表中設(shè)置字體為我們新建的字體就可以同時(shí)處理英文與漢字,滿足了本試題庫(kù)系統(tǒng)中對(duì)輸出試卷的字體的要求。

        (2)下劃線等特殊格式的處理

        試題內(nèi)容中包含有許多特殊格式,如斜體和下劃線等,需要在輸出時(shí)做特殊處理。這就需要用到fo:block塊中的fo:inline內(nèi)聯(lián)元素。通過(guò)XSLT對(duì)嵌套有斜體和下劃線的內(nèi)容作遞歸處理,把其中有特殊格式的部分放入內(nèi)聯(lián)元素中,并設(shè)置內(nèi)聯(lián)元素的font-style=“italic”和text-decoration=“underline”屬性后,可以把內(nèi)容按要求的格式輸出。對(duì)于加下劃線的內(nèi)容,為了顯示更加清晰,最好在加下劃線的內(nèi)容前后各加一個(gè)空格,但是由于在處理過(guò)程中不支持對(duì)空白字符加下劃線,所以需要找一個(gè)不可打印的非空白字符來(lái)代替空格。在這里可以采用插入轉(zhuǎn)義字符的方式實(shí)現(xiàn),通過(guò)嘗試“cedil;”、“#323;”和“”后,發(fā)現(xiàn)“”無(wú)論對(duì)于PDF還是RTF都可以滿足要求,在有下劃線的內(nèi)容時(shí)顯示不僅清楚而且美觀。

        (3)選項(xiàng)的排列

        如何合理排列選項(xiàng)是試卷輸出中的一個(gè)重要問(wèn)題。我們的選項(xiàng)排列方式有每行四個(gè)、每行兩個(gè)和每行一個(gè)三種。對(duì)于長(zhǎng)度較大的選項(xiàng)直接采用每行一個(gè)選項(xiàng)的方式輸出;而對(duì)于長(zhǎng)度變化可能較大的選項(xiàng)則根據(jù)選項(xiàng)的長(zhǎng)度動(dòng)態(tài)選擇按每行四個(gè)或兩個(gè)選項(xiàng)的方式來(lái)進(jìn)行排列。在輸出選項(xiàng)上,我們采用了XSL-FO中的表格元素fo:table,在計(jì)算出四個(gè)選項(xiàng)中最長(zhǎng)的一個(gè)選項(xiàng)的長(zhǎng)度后,根據(jù)我們的頁(yè)面設(shè)置判斷是否可在一行內(nèi)顯示完全,如果可以,就按每行四個(gè)選項(xiàng)設(shè)置選項(xiàng)表格的單元格寬度;否則,按每行兩個(gè)選項(xiàng)來(lái)設(shè)置表格的單元格寬度。這樣把選項(xiàng)輸出到表格中,就很好地解決了選項(xiàng)排列輸出的問(wèn)題。

        (4)圖片、聲音等特殊數(shù)據(jù)的處理

        試卷中還有另外一類特殊數(shù)據(jù),即非文字信息,主要包括圖片和聲音。它們也可以經(jīng)過(guò)編碼后存儲(chǔ)在試卷XML文檔中。在輸出試卷之前,可先由程序?qū)ML文檔中的圖片和聲音數(shù)據(jù)解碼并保存為磁盤文件,然后在輸出時(shí)進(jìn)行處理。其中圖片要輸出到試卷中,所以要在樣式轉(zhuǎn)換時(shí)通過(guò)XSLT和XSL-FO來(lái)進(jìn)行處理,在試題的輸出塊中應(yīng)插入圖片的地方,嵌入元素,則可以把GraphFileName 指定的圖片與試卷內(nèi)容一起輸出。對(duì)于試題的聲音文件則可以由程序進(jìn)行標(biāo)準(zhǔn)化后連接成一個(gè)完整的聲音文件。

        四、總結(jié)

        通過(guò)XSL轉(zhuǎn)換實(shí)現(xiàn)XML試卷輸出可以輸出多種格式的文檔,也能很好地進(jìn)行試卷版面設(shè)計(jì),并且將試卷的輸出樣式與程序和試卷內(nèi)容本身分離開(kāi)來(lái),具有很大的靈活性。同時(shí),試卷輸出時(shí)不需要Office等排版工具的支持,這對(duì)于通常不安裝此類軟件的服務(wù)器端來(lái)說(shuō)是非常方便的,所以這種方法使基于B/S的網(wǎng)絡(luò)試題庫(kù)系統(tǒng)能夠更加方便地實(shí)現(xiàn)試卷輸出。隨著Office等軟件逐漸加強(qiáng)對(duì)XML格式的支持,也可以由XML直接轉(zhuǎn)換成Office等軟件的XML格式,如WordML,ExcelML等。總之,基于XML進(jìn)行格式轉(zhuǎn)換是一種靈活方便的試題庫(kù)系統(tǒng)試卷輸出方案。

        參考文獻(xiàn):

        [1]鐘名春,廖赤球.試題庫(kù)成卷版面設(shè)計(jì)技術(shù)[J].廣州:機(jī)電工程技術(shù),2002,31(6):97-99.

        [2]楊瑩,呂津,劉光昌.基于XML 的網(wǎng)絡(luò)題庫(kù)的實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2004,25(8):1356-1358.

        [3]何昭青.基于XML 的分布式試題庫(kù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].吉首大學(xué)學(xué)報(bào)(自然科學(xué)版),2004,25(1):52-55.

        [4]丁揚(yáng). XML技術(shù)在試題庫(kù)改造中的應(yīng)用[D].華南理工大學(xué), 2003

        [5]W3C. Extensible Markup Language(XML) http://www.w3.org/XML/,2006/09/11

        [6]W3C. The Extensible Stylesheet Language Family(XSL) http://www.w3.org/Style/XSL/,2007/02/05

        [7]Apache Software Foundation. Formatting Objects Processor(FOP) http://xmlgraphics.apache.org/fop/,2007/01/22

        人妻少妇精品无码系列| 狠狠色狠狠色综合| 国产一区二区不卡老阿姨| 国产黑色丝袜在线观看视频| 国产激情视频高清在线免费观看| 中国久久久一级特黄久久久| 成人欧美一区二区三区1314| 狠狠色狠狠色综合| 亚洲传媒av一区二区三区| av网站在线观看亚洲国产| 国产精品多p对白交换绿帽| 日韩区在线| 精品国精品自拍自在线| 午夜被窝精品国产亚洲av香蕉| 国产精品美女久久久久久| 亚洲精品第一国产麻豆| 亚洲天堂一区二区精品| 亚洲精品国产电影| 久久中文字幕无码专区| 亚洲av在线播放观看| 水蜜桃网站视频在线观看| 久久国产成人精品国产成人亚洲| 亚洲色偷偷综合亚洲av伊人| 日韩不卡无码三区| 中文字幕有码人妻在线| 香港三级精品三级在线专区| 国产人成无码视频在线| 国产av三级精品车模| 亚洲人精品午夜射精日韩| 日韩精品无码久久久久久 | 极品粉嫩小泬无遮挡20p| 在线观看亚洲精品国产| 日本一区二区三级免费| 特黄大片又粗又大又暴| a毛片全部免费播放| 丝袜美腿av免费在线观看| 狂猛欧美激情性xxxx大豆行情| 1000部夫妻午夜免费| 亚洲一区不卡在线导航| 国产一区二区三区我不卡| 免费人成视频在线|