1

我必须开发一种工具,用于从一个电子学习标准内容包自动转换到另一个,到目前为止,我已经考虑过 IMS 和 SCORM,但我并不完全理解开发自动转换工具的最佳理由是什么IMS 到 SCORM,反之亦然。我的意思是可以从这种工具中获得什么好处?这就是我在一篇技术论文中得到的原因。任何人都可以解释和澄清这一点,或者告诉我开发这样一个工具的一些充分理由:

我们可以推断出格式之间自动转换的效用。这种转换将允许在高度自动化的学习平台之间进行交互。” - 电子学习内容自动转换 作者 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>

HTML

<?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&gt; 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&gt; 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&gt; 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>

感谢您!

4

1 回答 1

1

当我创建手工编码的课程时,我会尽量保持中立。eLearning 标准,例如 SCORM,通常使用我们所说的“包装器”,它基本上处理所有基本错误和连接过程。

当您从一个版本转到另一个版本时,例如 SCORM 1.2 到 SCORM 2004 第 4 版,逻辑并没有真正改变,它得到了改进,但所有以前的元素通常都在这里。因此,您基本上制作了一个具有相同函数名称的新包装器,并且所有基础知识都已经在工作。而且您的包装器并没有根本的不同,它只是替换了“cmi.xxx”。

要从一个标准转到另一个标准,如果基本原理相同,您可以使用另一个包装器,它会起作用。大多数简单的课程通常都是这种情况,一旦你开始进行互动、练习等,它就会变得很棘手。为了避免那些糟糕的时刻,请将所有交互逻辑与课程分开。

现在,您的课程可能不是由软件手动编码和生成的吗?在这种情况下,您需要分析“幕后”是什么,试图弄清楚何时以及如何用其他标准处理每个部分的方式替换它。

我认为转换器是非常不安全的事情,它将非常依赖于课程并且不能同样应用于所有课程,除非您找到一种方法来简单地用包装器替换它的交互。但是如果你能提供一个可以生成兼容所有标准的课程的工具,你已经让很多用户满意了!

现在回到您的问题,我认为您需要了解什么是电子学习标准

  • 要在浏览器中显示的文件。
  • 一个清单文件,用于描述您提供给 LMS 的内容。
  • 课程与其 LMS 之间的一种通信方式。

这些文件通常是 HTML 页面和周围的一切。清单是一个通常用 XML 编写的文件。在大多数情况下,通信是使用 Javascript 设置的。

  • IMS 是清单级别的标准,它描述了 .xml 文件中应该包含的内容。
  • SCORM 是一个标准,它考虑了列表的最后两个项目。(基于 AICC,它定义了课程和 LMS 需要遵守的内容。)

现在,如果您需要创建一个工具来转换 XML 文件,我认为任何技术都可以做到,因为它在技术上只是纯文本。

于 2012-08-15T15:10:35.790 回答