我必须开发一个工具,用于从一个电子学习标准内容包自动转换到另一个电子学习标准内容包,到目前为止,我已经考虑了IMS和SCORM,但我不完全理解开发从IMS到SCORM的自动转换工具的最佳理由是什么,反之亦然。我的意思是,这样的工具有什么好处呢?这就是我在一篇技术论文中提到的原因。请任何人解释和澄清这一点,或者告诉我开发这样一个工具背后的一些好理由:
"IMS 6和SCORM 7规范有许多共同的特点,但在学习内容的结构表示上也有一些关键的差异。需要考虑的另一个重要问题是这些系统的扩展以及大量使用这些系统的组织。这种情况导致了相同的内容被创建、保持、模式化等8种情况。这些内容通常不是相同的拷贝,但内容是相同的,目的是为了达到相同的学习目标。因此,在组织之间共享工作将是有益的,以避免重复工作一遍又一遍。这将节省时间和资源,并将导致高质量的内容。实现这一目标的主要障碍是,先前提出的不同类型的内容模型的存在。从所有这些,我们可以推断出格式之间自动转换的效用。这种转换将允许在高度自动化的学习平台之间的交互。“-E-学习内容自动转换由Guiterrez,Jose Maria等人。
JavaScript(SCORM软件包)
<script type="text/javascript">
<![CDATA[
var numQuestions = 2;
var rawScore = 0;
var actualScore = 0;
var question0;
var question1;
var key0 = 0;
var key1 = 1;
function getAnswer()
{
doLMSSetValue("cmi.interactions.0.id","key0b8");
doLMSSetValue("cmi.interactions.0.type","choice");
doLMSSetValue("cmi.interactions.0.correct_responses.0.pattern",
"0");
for (var i=0; i < 2; i++)
{
if (document.getElementById("quizForm8").key0b8[i].checked)
{
question0 = document.getElementById("quizForm8").key0b8[i].value;
doLMSSetValue("cmi.interactions.0.student_response",question0);
break;
}
}
doLMSSetValue("cmi.interactions.1.id","key1b8");
doLMSSetValue("cmi.interactions.1.type","choice");
doLMSSetValue("cmi.interactions.1.correct_responses.0.pattern",
"1");
for (var i=0; i < 2; i++)
{
if (document.getElementById("quizForm8").key1b8[i].checked)
{
question1 = document.getElementById("quizForm8").key1b8[i].value;
doLMSSetValue("cmi.interactions.1.student_response",question1);
break;
}
}
}
function calcRawScore(){
if (question0 == key0)
{
doLMSSetValue("cmi.interactions.0.result","correct");
rawScore++;
}
else
{
doLMSSetValue("cmi.interactions.0.result","wrong");
}
if (question1 == key1)
{
doLMSSetValue("cmi.interactions.1.result","correct");
rawScore++;
}
else
{
doLMSSetValue("cmi.interactions.1.result","wrong");
}
}
function calcScore2()
{
computeTime(); // the student has stopped here.
document.getElementById("quizForm8").submitB.disabled = true;
getAnswer();
calcRawScore();
actualScore = Math.round(rawScore / numQuestions * 100);
alert("Your score is " + actualScore + "%")
doLMSSetValue( "cmi.core.score.raw", actualScore+"" );
var mode = doLMSGetValue( "cmi.core.lesson_mode" );
if ( mode != "review" && mode != "browse" ){
if ( actualScore < 50 )
{
doLMSSetValue( "cmi.core.lesson_status", "failed" );
}
else
{
doLMSSetValue( "cmi.core.lesson_status", "passed" );
}
doLMSSetValue( "cmi.core.exit", "" );
}
exitPageStatus = true;
doLMSCommit();
doLMSFinish();
}
]]>
</script>
<?xml version="1.0" encoding="utf-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<!-- Other Code -->
<body>
<div id="outer">
<div class="QuizTestIdevice" id="id8">
<script src="calculate.js" type="text/javascript"></script>
<form name="quizForm8" id="quizForm8" action="javascript:calcScore2();">
<div class="iDevice_inner">
<div class="passrate" value="50"></div>
<div class="question">
<div id="taquestion0b8">
1> TEXT FOR QUESTION 1.
</div><br />
True<input type="radio" name="key0b8" value="0" id="taoptionAnswer0q0b8" />
False<input type="radio" name="key0b8" value="1" id="taoptionAnswer1q0b8" />
</div><br />
<div class="question">
<div id="taquestion1b8">
2> TEXT FOR QUESTION 2.
</div><br />
True<input type="radio" name="key1b8" value="0" id="taoptionAnswer0q1b8" />
False<input type="radio" name="key1b8" value="1" id="taoptionAnswer1q1b8" />
</div><br />
<input type="submit" name="submitB" value="SUBMIT ANSWERS" />
</div>
</form>
</div>
</div>
</body>
</html>
用于IMS包的Javascript和HTML
<html>
<body>
<div class="QuizTestIdevice" id="id8">
<script type="text/javascript">
<!-- //<![CDATA[
var numQuestions = 4;
var rawScore = 0;
var actualScore = 0;
var question0;
var question1;
var key0 = 0;
var key1 = 1;
var key2 = 0;
var key3 = 0;
function getAnswer()
{
for (var i=0; i < 2; i++)
{
if (document.getElementById("quizForm8").key0b8[i].checked)
{
question0 = document.getElementById("quizForm8").key0b8[i].value;
break;
}
}
for (var i=0; i < 2; i++)
{
if (document.getElementById("quizForm8").key1b8[i].checked)
{
question1 = document.getElementById("quizForm8").key1b8[i].value;
break;
}
}
}
function calcRawScore(){
if (question0 == key0)
{
rawScore++;
}
if (question1 == key1)
{
rawScore++;
}
}
function calcScore2()
{
getAnswer();
calcRawScore();
actualScore = Math.round(rawScore / numQuestions * 100);
document.getElementById("quizForm8").submitB.disabled = true;
alert("Your score is " + actualScore + "%")
}
//]]> -->
</script>
<form name="quizForm8" id="quizForm8" action="javascript:calcScore2();">
<div class="iDevice emphasis1">
<img alt="" class="iDevice_icon" src="icon_question.gif" />
<span class="iDeviceTitle">SCORM Quiz</span>
<div class="iDevice_inner">
<div class="passrate" value="50"></div>
<div class="question">
<div id="taquestion0b8" class="block" style="display:block">1> QUESTION 1
</div><br/>
<table><tr><td><input type="radio" name="key0b8" value="0" />
</td><td>
<div id="taoptionAnswer0q0b8" class="block" style="display:block">True
</div></td></tr>
<tr><td><input type="radio" name="key0b8" value="1" />
</td><td>
<div id="taoptionAnswer1q0b8" class="block" style="display:block">False
</div>
<br/><input type="submit" name="submitB" value="SUBMIT ANSWERS"/>
</form>
</body>
</html>
谢谢你!
发布于 2012-08-15 15:10:35
当我创建手工编码的课程时,我会尽量保持中立。eLearning标准,如SCORM,通常使用我们所称的“包装器”,它基本上处理所有基本错误和连接过程。
当您从一个版本转到另一个版本时,比如SCORM1.2到SCORM 2004第4版,逻辑并没有真正改变,它得到了改进,但是前面的所有元素通常都在这里。因此,您基本上可以制作一个新的包装器,它具有相同的函数名称,并且所有的基本功能都已经开始工作了。您的包装程序也没有本质上的不同,它只是替换了"cmi.xxx“。
要从一个标准转到另一个标准,如果基本面是相同的,您可以使用另一个包装器,它可以工作。对于大多数简单的课程来说,这通常都是这样的,一旦你开始进行互动、练习等等,就会变得很棘手。为了避免那些糟糕的时刻,让你所有的互动逻辑与你的课程分开。
现在,您的课程可能不是手工编写的,而是由软件生成的?在这种情况下,您将需要分析什么是“引擎盖下”,试图确定什么是做的,以及如何用其他标准的处理每个部分的方法来替换它。
我认为一个转换器是非常不安全的,它将是非常依赖于课程,不能应用于所有的课程相同,除非你找到一种方法,简单地取代它的交互,一个包装。但是如果你能提供一个工具来生成一个与所有标准兼容的课程,你就会让很多用户感到高兴!
现在,回到您的问题,我认为您需要了解,eLearning标准是由构成的:
这些文件通常是HTML页面和周围的一切。清单是一个通常用XML编写的文件。在大多数情况下,通信都是用Javascript设置的。
现在,如果您需要创建一个工具来转换文件,我认为任何技术都可以做到这一点,因为从技术上讲,它只是纯文本。
https://stackoverflow.com/questions/11919649
复制相似问题