基于XML的试题库试卷输出的设计与实现

来源 :中国教育信息化·高教职教 | 被引量 : 0次 | 上传用户:yap1711
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:本文主要讨论在基于XML的试题库系统中,通过XSL转换方便快速地输出试卷的方法和实现过程。通过此方法,不仅可以很好地控制试卷的版面设计,而且使程序、试卷数据和样式分离,在输出试卷时具有很大的灵活性,可以输出多种格式的试卷。
  关键词:试卷 输出 格式 XML XSL FOP
  中图分类号:G434 文献标识码:A 文章编号:1673-8454(2007)10-0070-03
  
  一、引言
  
  随着计算机技术在教学中的应用越来越广泛,试题库系统的建设也越来越重要。在试题库系统中,很重要的一个功能是试卷输出。由于Office等软件具备所见即所得、易于操作等特点,许多试题库系统基于这类软件对试卷进行版面设计及输出。[1] 这种方式虽然易于实现,但在使用时不能脱离软件独立运行,在没有安装这类软件的计算机上无法使用或是不能输出试卷,而且输出试卷的格式也受限于其依赖的编辑软件。另一方面,随着Internet的广泛应用,基于XML的网络试题库系统越来越多,这些系统更多地关注于试题的存储与传输,对所生成试卷的输出问题很少提及。[2] 而在实际试题库应用中,对试卷输出并打印是有很大需求的。
  由此,我们在研发大学英语试题库系统时对试卷输出进行了有益的尝试,实现了基于XML的试题库试卷的快速灵活的输出。本文主要讨论XML试题库试卷的输出过程及具体实现。
  
  二、XML格式转换的流程
  
  由于XML格式不仅可扩展性强、内容与样式分离、以文本格式进行存储和传输、具有良好的开放性、跨平台性和可操作性[3],而且与Word格式相比,采用XML格式来表示试卷、试题、参考答案文件有很多优点,更适合试题库的网络应用的需求。[4] 所以我们采用XML作为试题库系统中试题和试卷的存储格式。这样,试卷输出的关键是将由XML表示的试卷文档转换成其他格式的文档供修改或打印。其转换过程如图1所示:
  
  图1 XML格式转换过程
  
  XML源文档以XML格式存储了要转换输出的试卷内容。可扩展标记语言XML,可以使用自己创建的标记存储数据。在我们所开发的试题库系统中,试题和试卷都是基于XML存储的,其中音频和图片也可以编码后以XML格式存储。[5]
  XSL样式表定义了输出的版面设计和对输出内容的选取。可扩展样式表语言XSL由XSLT、XPath和XSL-FO组成。[6] 可扩展样式表语言转换XSLT提供一套规则,用于将一组元素描述的XML数据转换为另一组元素描述的文档,或者将该数据转换为一种自定义的文本格式。在这里,我们通过XSLT,将用XML表示的试卷转换为由XSL-FO表示的格式化对象。XPath是XML路径语言,用于对XML文档中的元素进行定位,由XSLT使用。格式化对象的可扩展样式表语言XSL-FO定义了在屏幕或纸张或其他媒介上如何显示数据。在我们的试题库系统中,输出的试卷排版布局由XSL-FO表示。
  处理器读取XML源文档和XSL样式表,并转换输出PDF、RTF、HTML等格式的文档。在多种转换处理工具中,我们选择了FOP。FOP是Apache XML Project提供的一种转换工具,使用它可以便捷地将XML文档转换为PDF、RTF等格式。[7] 但是由于FOP对于PDF和RTF的支持不完全相同,所在要针对PDF和RTF对样式表分别作修改,才能输出美观的文档。
  由图1可以看出,整个转换过程就是将表示内容的XML文档和表示样式的XSL文档提交给处理器,经处理器转换得到输出结果为PDF、RTF等格式的文档。
  
  三、基于XML的试卷输出实现
  
  在输出试卷时,我们首先将试题库组卷模块中生成的试卷保存为XML文档,然后根据要输出的试卷格式选择相应的样式表,把XML文档和样式表交给处理程序FOP处理后将试卷输出为PDF或RTF格式。本节先介绍我们采用的试卷结构,然后介绍对应的样式表,最后就实现过程中遇到的问题给出解决方案。
  1.试卷结构
  在本试题库系统中,试题和试卷都存储为XML结构。通过扩展XML标记,定义了适合本题库系统的试题和试卷XML结构。试卷的具体结构为:
  <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)由几个部分(Part)组成,每个部分由一节或几节(Section)组成,每一节由若干试题(Item)组成。对于试题,由于题型的不同,包含不同的元素。基本的试题结构为:
  <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>
  试题的主要元素有题干、问题、答案。对于听力题,需要有声音文件和听力脚本。
  2.样式表
  与试卷对应的XSLT样式表结构为:
  <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文档中,题目内容、答案以及听力原文是在一起的,但在输出的试卷中,要将其分成三个不同的部分,而且试卷输出的同时要输出答题纸,所以要对输入的XML试卷进行四遍扫描,每一遍分别应用不同的模板,取出所需要处理的信息进行转换输出。
  试题册模板首先输出试卷名称和注意事项等内容,然后遍历试卷中的每一部分节点,根据每部分的名称来应用对应的部分模板。每部分的模板先输出标题,然后遍历本部分中的所有节,对不同的节应用对应的节模板。节模板先输出节标题和本节的答题要求,然后遍历本节的所有试题,应用对应的试题模板对试题内容进行输出。对于不同的试题,根据其所具有的元素,选择要在试题册上显示的内容输出。
  答题卡模板、答案模板和听力脚本模板同样采用上面按层次调用的方法,逐步应用部分、节和试题模板,输出自己所需要呈现的内容。所有的内容都输出到fo:block内容块中。
  3.转换过程中遇到的问题及解决办法
  设计好样式表以后,就可以使用FOP对XML试卷进行转换输出了。在输出过程中,笔者在字体、试卷中的特殊格式等方面遇到以下主要问题需要解决。
  (1)字体设置
  由于试卷上大部分内容是英文,需要用英文字体来显示,但是也会出现一些汉字,需要用汉字字体来显示,而由于FOP的PDF输出不支持多字体,所以采用英文字体输出后应该是汉字的内容就成了“#”号。为了解决这一问题,需要自定义字体。我们制作了新的字体文件TestBank,将英文字体和汉字字体组合在一起形成一种新的字体。制作好字体文件后,还要生成字体映射文件TestBank.xml,并在FOP的配置文件中进行注册。这样,在样式表中设置字体为我们新建的字体就可以同时处理英文与汉字,满足了本试题库系统中对输出试卷的字体的要求。
  (2)下划线等特殊格式的处理
  试题内容中包含有许多特殊格式,如斜体和下划线等,需要在输出时做特殊处理。这就需要用到fo:block块中的fo:inline内联元素。通过XSLT对嵌套有斜体和下划线的内容作递归处理,把其中有特殊格式的部分放入内联元素中,并设置内联元素的font-style=“italic”和text-decoration=“underline”属性后,可以把内容按要求的格式输出。对于加下划线的内容,为了显示更加清晰,最好在加下划线的内容前后各加一个空格,但是由于在处理过程中不支持对空白字符加下划线,所以需要找一个不可打印的非空白字符来代替空格。在这里可以采用插入转义字符的方式实现,通过尝试“
其他文献
摘 要:本文介绍了在VB中利用ADO的AppendChunk方法在数据库中存取BLOB数据的具体方法,并给出实现图像存取显示的完整工作过程,为多媒体信息管理系统的开发提供了有效的解决方案。  关键词:VB 数据库 ADO BLOB图像存取  中图分类号:TP311.134.3 文献标识码:B 文章编号:1673-8454(2009)01-0082-05    一、引言    在使用数据库的过程中,
话题中,大班幼儿一方面展示出对自己感兴趣的问题刨根问底,愿意动手动脑去寻找问题的答案;另一方面又初步了解了人们生活与自然环境的密切关系,知道尊重和珍惜生命,保护环境。那么,教师既要鼓励幼儿积极探究,又不能默许幼儿伤害生命,困惑的实质就在于如何将科学教育与生命教育相统一。  梳理幼儿问题  面对案例中的场景,教师首先应倾听幼儿、仔细分析幼儿的对话,梳理幼儿的问题。  从对话中可以发现:(1)在认知方
清华大学计算机与信息管理中心2001年提出了校园数据中心的理念,2004年基本实现了应用系统的集中运行和统一管理,有效实现了资源整合,减少了学校在信息系统运行环境、维护人员等方面的重复投资。但随着信息系统数量的增加,数据中心内的服务器数量也不断增加,各类服务器达150多台,不但耗电严重,而且硬件的故障率逐年上升,维护成本越来越高。从2005年开始,经过3 年的探索和实践,清华大学对数据中心内部的服
摘 要:随着因特网基础设施与因特网应用服务的发展,IPv4在因特网目前规模与复杂性面前已暴露其不足之处。要综合解决IPv4存在的诸多问题,IETF设计的下一代互联网协议IPv6已经成为目前唯一可行的解决方案。  关键词:IP地址 IPv6 CNGI  中图分类号:TP393 文献标识码:A 文章编号:1673-8454(2008)09-0016-02    一、IPv6出现的必然性    IPv6
摘 要:电子书包在教育领域的应用近几年得到了学者们的重视。本文构建了基于电子书包的教师、学生和家长三方协作平台,对平台的每个构件进行了详细的阐述,最后作者分析了基于电子书包的三方协作平台对教育信息化的现实意义。  关键词:电子书包;协作学习;教育信息化  中图分类号:TP315 文献标志码:A 文章编号:1673-8454(2013)21-0024-03  一、背景  在传统的教学过程中,教师、学
为推进党的群众路线教育实践活动深入开展,贯彻落实全国教育信息化工作电视电话会议精神,强化信息技术与教育教学深入融合的核心理念,推进信息技术在日常课堂教学中的深度应用,教育部于9月24日在哈尔滨举办信息化教学现场观摩活动。  来自全国各省(区、市)和新疆生产建设兵团教育行政部门的有关负责同志观摩了黑龙江省哈尔滨市香滨小学的三节课堂教学活动,该校是教育部首批教育信息化试点学校,在信息技术促进教育教学模
幼儿园如何通过项目教学活动来落实核心素养、奠定幼儿的积极品格?北京市朝阳区惠新里幼儿园结合国际上关于核心素养的共识,将课程目标定位为培养幼儿的十大积极品格——有序、爱心、自信、分享、尊重、孝敬、勇敢、责任、合作、坚毅,使幼儿拥有自律、自由、自主、自信的人格,初步建立起“开智启慧、明德正心”的“慧心课程”,开展了丰富而有意义的项目教学活动。下面以小班案例“神奇虫宝宝”为例。   活动背景与过程  惠
摘 要:我国职业技术院校IT专业近几年来生源不断下滑,培养的学生技能普遍比较差,则缺乏针对性,不适应企业的岗位需求。IT专业如何设置,教学内容如何组织、如何施教,才能适应企业的岗位需求。本文从IT岗位需求入手,探讨职业技术院校IT专业设置,以及相应的施教策略,从而有利于培养实用型的技能人才,满足企业需求。  关键词:岗位需求;T专业设置;技能人才  中图分类号:G434 文献标志码:A 文章编号:
什么是灵感?杜威说,灵感是人们思维过程中一种新的思路突然接通,它是一切创新的关键起点,可遇不可求,特别珍贵。幼儿期是一个人顿悟式灵感思维最活跃的时期。因为童心,不拘于物,不滞于相,天马行空,感受欢喜。就像他们发现一堆枯树枝会说“我捡到一条鳄鱼”“我捡到一只蜜蜂窝”“我捡到两颗大象的牙齿”,他们与生俱来能和任何自然物进行通灵的对话,灵感一触即发,那是真正来自生命本源的灵感。但是,如果没有后期的跟进,
作为一个孩子刚上幼儿园的妈妈,我特别能理解家长们的唠叨。这种唠叨其实并不是一种不信任,更像一种与孩子分离时不舍的情感表达。作为幼教工作者,我们可以换一个角度来理解这种“嘱咐”,就更容易接受和理解这种“唠叨”。在工作中我的做法是“让喝水看得见”,让“多喝水”不再成为家长传递情感的连接,而成为家长对老师工作“放心”的保证。  ● 从“生理表现”上看得见  孩子在幼儿园有没有喝足水,最直观的方式就是观察