用HTAs编写Moodle试题导入文件生成工具《中国教育信息化》发行部:***********.cn用HTAs编写Moodle技术应用试题导入文件生成工具代水平(武汉大学计算机学院,湖北武汉430072)摘要:Mood1e是目前应用广泛的开源网络教学平台,提供了试题导入功能,但要求文件符合一定格式规范本文通过编写HTAs.解决试题编写,生成试题导入文件的问题. 关键词:Moodle:HTAs:DHTML中图分类号:TP311.5文献标识码:A文章编号:1673—8454【2010)21—0085—04一,引言泛普及.Moodle(ModularObject一0dentedDynamicLearningMoodle系统功能强大,涉及教学环节的诸多方面,下Environment),即:模块化面向对象的动态学习环境,是一面仅就涉及考试(测验)试题题库方面遇到的输入问题提套基于社会建构主义理论设计开发的开放源代码的网络出一种解决方案教学平台.体现了以学生为中心的创新教育理念目前全二,问题的提出与分析球已有54793个注册的Moodle站点.超过200万注册用Moodle提供了在线试题输入功能.通过在Web页面户通过这一系统进行学习.在中国Moodle同样得到了广直接编辑题目,提交至服务器.该方式存在一些不便之+一+一+一+一+”十一+-+一++-+一+-+一+-+一+一+一—?卜一+-—-卜一+-+一+-十一十一+*+一+-—-+一一+-—-’~一+一+一+一十-——+一一+-—-+一+一—+一一十一+一+*+一+一+一—卜<description></description></property></configuration>启动Tomcat.输人http://1ocalhost:8080~nutch一1.0.就会发现搜索引擎能够搜索了第五步.发现搜索中文出现乱码.修改Toincat配置文件tomcat6.0\conf~Server.xml,具体内容如下:<Connectorport=“8080”redirectP0r【=“8443”connectionTiineout=“20000”URIEncoding=“UTF一8”useBodyE ncodingF0rURI=“true”/>六,搜索引擎的比较成功配置完搜索引擎之后.我们将基于Nutch的教学资源搜索引擎与百度,Google进行搜索比较.假设有一位学生需要查询生态学方面的资源.在Nutch搜索栏中输入”生态学”.在百度与Google搜索栏中分别输入”site: .Cll生态学”.用查询结果前三项作比较.如表所示.可以看出.基于Nutch的教学资源搜索弓f擎比其他2个商业搜索引擎更好地搜索出所需教育资源七,结束语本文主要介绍了如何实现基于Lucene和Nutch教育资源搜索引擎的构建.但是只是初步地实现了在校园表前三项查询结果,,\搜索引擎序\\Nutch百度Google校内本实验室的特点之一是1生态学研究方向充分发挥传统公告领域的优势南京农业大学校内I1)oq地理资源所区域环2教学精品课程境变化综合探测与模拟建设工作公告研究室招聘博士后启事作物育种学课南京3农业校内公告程网大学网中搜索教育资源的功能.如果要使搜索引擎的搜索性能提高,更人性化地进行搜索.仍需要进一步进行探究与改进⑩参考文献:『11Lucene中国:/【2J蔡小艳,寇应展,沈巍,郑伟.Nutch-0.9中JE中文分词的实现uJ.科学技术与工程,2008,8(17):4881—4884.[31张锦圻.基于Nutch的中文搜索引擎的构建[『1.图书馆研究与工作.2009(1):54—57.【41陈建锋.Nutch的中文问题研究卟现代计算机专业版(专业版),2009(7):60—62.f5]IKAnalyzerq-文分词器V3.0使用手册.(编辑:隗爽)ChinaEducationInfa85技术应用处.从输入过程看,每编辑一道题需要先选择题型.然后在试题输入页面进行详细的设置并输入.包括题目分数, 各答案选项的反馈信息,整体反馈信息等.完成后需要提交保存方可编辑下一道题目.使得这一过程繁琐而低效从习惯差异看,Moodle没有单项选择和多项选择之分.其填空题型等同于简答题.而完型题等同于我们的填空题. 这在理解上带来了不便Moodle同样提供了导人导出试题文件的功能.通过导入,批量输入多道题目.这可以解决在线编辑的低效问题.从这一角度切入.可以编写离线试题文件生成工具. 并且从界面上提供符合国人习惯的试题编辑方式.最终通过它生成符合标准的试题文件导人MoodleMoodle对试题文件的格式做了规定.并支持多种类型的试题文件.比较常用的有GIFT,MoodleXML, MissingWord,Aiken等.其中MoodleXML格式是Moodle 专有的试题导出导入格式.通过对比研究.该格式适应多种题型.最适合试题导入MoodleXML格式遵循W3C的XMLI.0规范.它的一般格式是:<?xmlversion=1.07><quiz><questiontype=“multichoiceltruefalselclozel……”> <name><text>questionname</text></name><questiontextformat=“html”><text>Whatistheanswertothisquestion?</text> </questiontext>……<defaultgrade>1</defaultgrade>’’<只nRwPr><text>answerforquestion</text></answer>……,/更多的answer节点</question>’</quiz>通过研究该格式.弄清各个节点的含义.下一步即考虑采用何种技术开发应用程序.Moodle官方网站()已经提供了由V yatcheslavYatskovsky编写的用于试题输入的Word模板.利用word提供试题输入界面,以VBA代码生成试题文件该模板以MIT许可协议授权用户使用,稍加汉化即能满足批量试题输入的要求.由于Word操作的灵活, 使得编辑试题时出错改错的机率较高.另外,仍然存在题型理解差异问题.使用起来还是不便.因此有必要编写符合国人习惯的应用程序Moodle的试题最终以网页的形式呈现.如果以编辑86中国教育信息化/2010.21(高教职教)《中国教育信息化》煽辑部:***********.cn网页的形式输入试题,则可以实现编写时的题目内容,格式与将来呈现出来的题目保持一致.本文开发的Moodle 试题导人文件生成工具实质上是一个特殊的HTML编辑器.我们可以把多道题目以文本或HTML的形式直接输入页面,使其成为页面的某个元素或者某个元素的值.利用脚本从HtmlDoeument对象可以获取该元素对象.从而得到题目本身的内容Microsoft提供了HTML应用程序fHTAs1的示例程序:MicrosoftHTMLEditor,直接利用DHTML的支持就能实现Web编辑该示例为Moodle试题导人文件生成工具的编写提供了思路和支持当用户编辑完题目后.利用XMLDOM对象.即可生成题目对应的Me.odleXML的节点所有节点生成后.就可以生成MoodleXML类型的试题文件三,问题解决方案1.HTML页面元素与)(ML节点的对应是实现目标的关键用户在页面上编辑的内容最终要成为XML节点的数据.因此首先要解决编辑内容与XML节点的对应.本文使用带有name属性的HTML容器元素<div>实现这种对应.以选择题为例:当用户输入题目后,该题目题干内容最终成为questiontext/text节点的值可以在页面上生成<divHame~:Eluestiontext></div>~素.并设置containtEditable属性为true.使用户可以编辑该元素的内容.最后利用di对象的innerHTML或innerTEXT属性获取题目内容.然后赋予questi0ntext/text节点值.同理,对于选项部分(常见的为4个选项)可以在页面上生成4个<divname=ansWer></div>元素.实现各答案选项与answer/text节点的对应.如图1所示XML节点图1HTML元素与XML节点的对应对于其他必要的节点.~I3<defauhgrade>,<name>等亦可考虑使用<div>或者根据编程需要采用其他元素.2.Moodle试题导入文件生成工具的框架编写该工具实际上就是编写一个包含脚本的HTML文件.以.hta为扩展名.从而成为HrAs.可以使用已有的Web编辑器编写其主要内容如下:《中国教育信息化》发行部:cyl@mo~.edu.<html><head><metahttp一.equiv=“Content—Typecharset=曲2312”><tiffe>Moo,dh试题导人文件生成工具一MoodleXML 格式</tide><HTA:APPLICA TI,0NID=“oHTA”APPLICA TIONNA1ME=“Mood]eQuizEditor”/><styletype=“text/css”>.EditArea{border—style:groove;border一.width:2px; width:100%;height:86%;overflow:auto;background—color.”#FFFFFF}……//内联CSS.提供各个页面元素外观布局设置</style><scri ptlanguage=“JScript”>…..//所需脚本函数</script></head><bodybgcolor=“#COCOC0”><divid=“oEditArea”class=“EditArea”></div><inputtype=buttonvalue=“添加题目”onclick=“AddQuestion0”></body></html>以上元素中.<divid-----”0,EditArea”>从界面上提供一个编辑区,~+<inputtype=button>元素提供用户交互,比如”添加题目”按钮调用AddQuestion0脚本函数在编辑区添加表示一道题目的各个页面元素3.页面元素的布局解决了HTML元素与XML节点对应的问题以及界面上如何操作来添加这些HTML元素后.必须考虑这些页面元素的布局,以便提供良好的用户界面.本文采用了布局表格,以单项选择题为例,采用如图2所示的布局:I,题号】<divname=“questiontext”>单项~@@ff-</div> J0A<divname-allswer>选项1</div>0B<divnanle=answer>选项2</div>[分数]0C<divname=angwer>选项3</div>01]<divname=answer>选项4</div>图2单选题布局以上是一个2x2表格(以下称为题目布局表),cell(1,1)用来显示小题号,cell(1,2)用来装A-<divname= questiontext></div>~素,cell(2,1)用来为题目附加分数技术应用值.而.1l(2,2)则嵌入另一个布局表(以下称为答案布局表).此处为4x2表格.每行的第2列装入<divname=awe-></di>元素.此表格可有更多的行表示更多选项. 每行第1列用来装入一个控件元素,比如对单选题,使用<INPUTtype=radio>单选按钮.所有按钮具有相同的.m.属性.使用户在界面上能选择正确选项.更为重要的是.M0.delXML要求提供客观性题型(选择题,判断题等)的正确答案.并使用XML节点<answer>的fraction属性值保存.以便系统评分.使用控件元素可以根据其checked属性值.获知题目正确答案项.同样的布局也适用于其他题型.判断题实质上是只有两个选项的单选题,对应答案布局表格只有两行;问答题和论述题这些主观性题型则不需要嵌人答案布局表,改为用<INPUTtype=text>控件满足外观要求.对于填空题(对应Moodle的C1oze题型),目前仍然在输入时存在一定难度按照Moodle的规定,空缺处的表示方法最简单的是格式字符串:”f分值:SHORTANSWER:=答案l”,并且该字符串以文本形式嵌入题干.该题型可以有两种考虑.一种是在编辑题干部分时,需要填空的位置用脚本添加文本框.导出时把该文本框替换为格式字符串.该方法在界面上比较美观;另一种仍然保留答案布局表.用来保存填空处的答案.而编辑题干时在需要填空的位置用特殊符号占位,导出时把特殊符号替换为格式字符串.至此.每一道题目都对应页面上一个题目布局表.该表赋予name=-tbQuestion”然而要实现多种题型输入,并且便于脚本处理.应该把同类型题目归类,因此页面上使用容器<div>把同一题型的所有题目布局表装入其中.并使用ID属性区别不同题型题型容器中可加入一些元素表示大题名称.大题分数等.使得界面更加美观典型的单选题示例如图3<divid=sc>--,单选题:(n小题,共m分)[小题号】<divname=questiontext>ig&1题ff’</div> 0A<dlvname=answer>选项l</div>0B<divname=answer>选项2</div>【分数】0C<divname=allswer>选项3</div>0D<dlvname=allswer>选项4</div>,题号]<divname=questiontext>ig择题2@ff’</div>0A<d1vname=answer>选项1</div>0B<divname=answer>选项2</div>【分数】0C<divname=artswer>选项3</div>0D<divname=answer>选项4</div></div>图3单选题大题布局ChinaEdtJcationInk)87技术应用《中国教育信息化》编辑部:mis~ 4.生成页面元素DHTML提供了各种动态生成页面元素的技术.例如:document对象的createE1ement方法.多种页面元素的innerHTML属性,insertAdiacentHTML方法等等.利用这些技术可以编写脚本生成上面所述的布局表和其中的各种元素,并把它fflD~A页面.为简化编程,可以利用现有的Web编辑器,预先编辑好不同题型对应的布局内容(模版),并各自保存为文件,需要时直接从文件中读取这些HTML文本加入网页比如对于单选题,可用singlcchoice.htm文件保存布局模版,当需要生成一道单选题时,AddQuestion0脚本函数利用FileSystemObject对象读取该文件.处理后加入题型容器<DIVid=sc></DIV>中:fso=newActiveXObject(“Scripting.FileSystemObject”);f=fso.OpenTextFile(“singlechoice.htm”,1);cXTMdan=f.ReadAll0;f.Close0;…../,模版处理SC.insertAdjacentHTML(“beforeEnd”.cXTMdan);5.X/VlL节点的生成及MoodieXML文件的导出当用户导出题目时.要根据每道题生成相应的XML节点树.利用脚本可以生成XMLdocument对象并生成根,~<quiz></quiz>:val”objXMLDoc:newActiveXObjectff’Mi crosoft. XMLDOM”);objXMLDoc.1oadXML(“<quiz></quiz>”);使用该对象的createnode方法即可生成所需的节点.并加入XMLdocument对象.最终使用save方法保存为文件同样为简化编程.参照布局模版文件的方式.把不同题型的节点树以xml文件f模版1的形式存放,利用XML 数据岛(xmldataisland)嵌入网页例如,单选题节点树以singlechoice.xml保存,内容如下:<qu estiontype=“muhichoice”><name><text>单选题名称<Itext></name><questiontextformat=“html”><text>单选题题干<Itext></questiontext>……//其他相关节点<answerfraction=“100”><text>选项l</text>88中国教育信息化/2010.21(高教职教)<feedback><text></text></feedback></answer></question>网页中以<xmlid=quizTypeXML_scsrc=singlechoice.xml></xml>元素嵌入,这样在导出单选题时,首先克隆该数据岛的节点树,U4~uAobjXMLDoc,简化了编程.oNodes=quizTypeXML_sc.XMLDoeument.documentElement.cloneNode(true);objXMLDoc.firstChild.appendChild(0Nodes);当最终导出MoodleXML文件时.首先获取页面中所有的题目布局表(name=“tbQuestion”),然后依次对每一个布局表生成对应题型的XML节点树.并根据该布局表中的元素与节点树中的节点的对应关系.依次修改节点值.最后利用XMLdocument对象的sa,,e方法即可生成文件oTbQuestions=oEditArea.all(“tbQuestion”); nQuestions=oTbQuestions.1ength;f0r(i-0;i<nQuesti0ns;i++){…..//判断题型,生成节点树,编辑节点值}objXMLDoc.save(<导出文件路径>);四,结束语笔者通过编写Moodle试题导人文件生成工具.较好地解决了在Moodle中输入题目的问题.界面友好.符合国人习惯.实现了WYSIWYG的编辑风格.规范编辑降低出错的几率,在Mo0dle教学中收到了良好的效果.本工具不足之处在于.忽略了题目的一些细节内容.比如对答题的总体反馈.对每个选项的反馈等,这些都可以根据要求加入.并在界面上提供设置,供不同用户的需要.另外.由于采用HTAs实现,只适用于Microsoft Windows和IE6以上系统⑩参考文献:[1]MoodleXMLformat./en/Moodle_ XML.[2IHTMLApplications./en—us/ library/ms536471fvVS.85).aspx.[3]DHTMLReference./en—us/ library/ms533050(vVS.85).aspx.【4]ExtensibleMarkupLanguage1.0.http://www.w3.or#TR/ 1998/REC—xml一19980210.(编辑:隗爽)。