SCORM 1.2 is a so-called profile that defines a Web-based learning "Content Aggregation Model" and "Run-Time Environment" for learning objects.
In more understandable words, SCORM 1.2. is s standard that defines how to author e-learning contents.
See also:
It is not obvious to find somewhat SCORM-conformant LMSs besides the list of SCORM certified products. Many open source system claim to be SCORM conformant, but DSchneider is not sure of this. I don't have time or even the will to test these systems, but I noticed that some choked on simple examples found on the web ...
As an extention of IMS Content Packaging, SCORM 1.2 defines an e-learning standard that provides functionalities for contents (and user interactions upon) to communicate with a LMS.
With a simple picture by William Horton grabbed from a Moodle forum:
A SCORM 1.2. compliant system must adopt the following specifications (which in turn adopt other specifications and standards):
In practical terms you need:
According to Rustici (2004), a SCORM conformant LMS is required to implement an API, i.e. a ECMAScript object named "API" accessible through the DOM and that implements eight JavaScript functions.
LMSInitialize() LMSFinish()
LMSGetValue() LMSSetValue() LMSCommit()
LMSGetLastError() LMSGetErrorString() LMSGetDiagnostic()
'All' communication between the content and the LMS is handled by this adapter.
For minimal SCORM conformance, the only thing that a piece of content needs to do is call LMSInitialize() when it starts and then call LMSFinish() when it exits. This is not as simple as it sounds, because a simple ECMAScript line doing "LMSINitialize()" will not do the job (see below).
SCORM adopts the "cmi" data model from AICC. It consists of data model elements which the content can read from and write to using this interface. Here is an example from Rustici (2004):
cmi.core.lesson_location is the data element that describes the user's location in the content.
When the content begins (after it has called LMSInitialize();), it may want to make this call to find out where the user left off and return him to that point:
strLastLocation = objAPI.LMSGetValue("cmi.core.lesson_location");
The Data Model describes several kinds of data. The following table lists some of these data types plus associated JavaScript objects and some possible system messages displayed to the user.
Here are a few more data types, this time with a short explanation of the purpose ):
cmi.core.student_id | Unique alpha-numeric code / identifier that refers to a single user of the LMS system. |
cmi.core.lesson_location | This corresponds to the SCO exit point passed to the LMS system the last time the student experienced the SCO. This provides one mechanism to let the student return to a SCO at the same place he left it earlier. In other words, this element can identify the student's exit point and that exit point can be used by the SCO as an entry point the next time the student runs the SCO. |
cmi.core.score.raw | Indication of the performance of the student during his last attempt on the SCO. This score may be determined and calculated in any manner that makes sense to the SCO designer. |
cmi.interactions.n.type | Indication of which category of interaction is recorded. The type of interaction determines how the interaction response should be interpreted, e.g. "true-false", "choice", "fill-in", etc. |
Please read the 40 pages of definitions in the The SCORM Run-Time Environment manual for real information. The examples above are here to give a feeling of CMI Data Model's expressive power.
In order for a SCORM CP to work, an author must at least call LMSInitialize() when an item starts and then call LMSFinish() when it ends. Before doing this, the API adapter "must be found".
E.g. the resource could look like this:
<html xmlns:fo="http://www.w3.org/1999/XSL/Format"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script src="SCORM1_2Generic.js" type="text/javascript" language="JavaScript"></script> <title>William Blake's Songs of Innocence and Experience</title> </head>
<frameset rows="100%,*" onload="LMSInitialize()" onunload="LMSFinish()" onbeforeunload=" LMSFinish()"> <frame name="cg_stage" src="index.htm"> <frame src="dummypage.htm"> </frameset> </html>
Just finding a library like SCORM1_2Generic.js and that is compatible with all modern browsers seems to be a major headache. Here are a few resources that may help:
Acknowledgment: This section is mostly a summary of the The SCORM 1.2 Content Aggregation Model Manual.
The CAM model includes three standards:
It is important to understand that The IMS Content Packaging allows for communities to use their own namespaced elements throughout the XML manifest. This may lead to a lot of confusion. E.g. if a vendor claims to export contents to IMS Content Package or even some more focused component like IMS Learning Design, it does not mean that these contents then can be played by a minimal IMS CP compatible LMS. It will just happily ignore items that it can't understand. In turn, it also is allow to extend the SCORM extensions (but with the same caveat).
According to the The SCORM Content Aggregation Model manual, “The purpose of content structure is to provide the content developer with the means to author collections of learning resources into a cohesive unit of instruction, apply structure and associate specific behaviors that can be uniformly reproduced across LMS environments. The content structure can be considered the map used to sequence/navigate through the learning resources defined in the content package. The content structure contains not only the structure of the learning resources, but also all behaviors to be applied to the learning experience.”
SCORM extends the simple IMS Content Pack default organization inclusion not only with SCOs, but also with a subset of additional vocabulary to define learning sequences and that are derived from the Aviation Industry Computer-Based Training Committee (AICC) Computer Managed Instruction.
Roughly, a SCORM Manifest looks like this:
<manifest identifier=Manifest" version="1.1" xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2" xmlns:adlcp="http://www.adlnet.org/xsd/adl_cp_rootv1p1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsproject.org/xsd/imscp_rootv1p1p2 imscp_rootv1p1p2.xsd http://www.imsproject.org/xsd/imsmd_rootv1p2 ims_md_rootv1p1.xsd http://www.adlnet.org/xsd/adl_cp_rootv1p1 adl_cp_rootv1p1.xsd">
<metadata> <schema>ADL SCORM</schema> <schemaversion>1.2</schemaversion> <imsmd:lom> <imsmd:general> <imsmd:title> <imsmd:langstring xml:lang="en-US">Example Manifest</imsmd:langstring> </imsmd:title> </imsmd:general> </imsmd:lom> </metadata>
<organizations default="TOC1"> <organization identifier="TOC1" structure="hierarchical"> <title>default</title> <item identifier="ITEM1" identifierref="RESOURCE1" isvisible="true"> <title>Lesson 1</title> <item identifier="ITEM2" identifierref="RESOURCE2" isvisible="true"> <title>Introduction 1</title> </item> <item identifier="ITEM3" identifierref="RESOURCE3" isvisible="true"> <title>Content 1</title> </item> <item identifier="ITEM4" identifierref="RESOURCE4" isvisible="true"> <title>Summary 1</title> </item> </item> <item identifier="ITEM5" identifierref="RESOURCE5" isvisible="false"> .... </organization> </organizations>
<resources> <resource identifier="RESOURCE1" <file href="lesson1.htm"/> </resource> <resource identifier="RESOURCE2" <file href="intro1.htm"/> </resource> ... </resources>
</manifest>
The resource element can contain the following components:
<metadata> <file> <dependency> (this is a SCORM extension of IMS CP)
SCORM defines a special attribute to distinguish between SCOs and assets as shown in the following examples:
A SCO resource:
<resource identifier="R_A2" type="webcontent" adlcp:scormtype='sco' href="sco1.html"> <file href="sco1.html"/> <file href="sco2.html"/> <file href="sco3.html"/> </resource>
An asset resource:
<resource identifier="R_A5" type="webcontent" adlcp:scormtype='asset' href="pics\distress_sigs_add.jpg"> <file href="pics\distress_sigs_add.jpg"/> </resource>
It is important the the href attribute of the resource element points to the main resource that has to played. If the resource and the associated element is supposed to be SCO, then it's within this file that one makes the appropriate RTE calls.
Acknowledgment: This section is mostly a summary of the The SCORM 1.2 Content Aggregation Model Manual.
Sequencing and navigation behavior refers to the rules that an LMS must follow in order to present a specific learning experience. These rules encoded in the organization section of Content Packaging. The main difference with the default IMS Content Pack lies in the definition of the item element. An item is a pedagogical sequence or sub-sequence.
Formally speaking, an <item> element describes a node within the organization structure. These item elements also can be nested.
An item' can contain the following elements:
<title> <item> <metadata>
A minimal item must look like this:
<item identifier="ITEM3"> <title>Content 1</title> </item>
More typically, an item refers to a resource using the identifierref attribute. The resource is either a simple asset or a SCO.
<item identifier="ITEM3" identifierref="RESOURCE3" isvisible="true"> <title>Content 1</title> </item>
SCORM defines the following five AICC/CMI inspired extensions for the item element: Prerequisites, Max time allowed, Time Limit Action, Data from LMS, Mastery Score:
<adlcp:prerequisites> <adlcp:maxtimeallowed> <adlcp:timelimitaction> <adlcp:datafromlms> <adlcp:masteryscore>
In technical terms it means that a SCORM editor should provide support for generating these elements, or that you should learn how to do this semi-manually with a tool like the Reload Editor.
This element defines what other parts of the learning content must have been completed before starting the <item>. This allows an LMS to compute multiple paths through the learning content.
An item can contain SCORM extensions that define operators of a prerequisite scripting language called aicc_script. These are based on the AICC CMI001 Guidelines for Interoperability.
An example: The following means that in order to access item I3, the learner must pass items I1 and I2.
<item identifier='I0'> <item identifier='I1' identifierref='R_I1'> <item identifier='I2' identifierref='R_I2'> <item identifier='I3' identifierref='R_I3'> <adlcp:prerequisites type='aicc_script'> I1&I2</adlcp:prerequisites> </item> </item>
(see page 2-109 of the manual)
The following elements can define time allowed for a sequence (item) and what happens if the student doesn't respect this. The item element must be of SCO type !
<adlcp:maxtimeallowed> <adlcp:timelimitaction>
The following piece of code states that the learner has 30 minutes for an item identified as "ITEM3".
<item identifier="ITEM3" identifierref="RESOURCE3" isvisible="true"> <title>Content 1</title> <adlcp:maxtimeallowed>00:30:00</adlcp:maxtimeallowed> </item>
The following piece defines that the LMS must terminate the sequence without message.
<item identifier="ITEM3" identifierref="RESOURCE3" isvisible="true"> <title>Content 1</title> <adlcp:timelimitaction>exit,no message</adlcp:timelimitaction> </item>
This element establishes the passing score for the item. This mastery score should be a value between 0 and 100.
Example:
<item identifier="ITEM3" identifierref="RESOURCE3" isvisible="true"> <title>Content 1</title> <adlcp:masteryscore>90</adlcp:masteryscore> </item>
(ToDo)
The package may include XML errors. You can try to fix the package, but this requires some XML and XML Schema skills.
The best path, probably is to:
imsmanifest.xml
fileAlternatively, you also could buy a good XML-Editor.
The XML namespace problem
If the SCORM package doesn't validate it can be due to some well-spread misunderstanding of the XML namespace that probably was triggered as a workaround of bugs in a well-known XML editor at the time. Official SCORM 1.2 XML Schema files (XSD) include deliberate mistakes in order to fix software bugs (yes, that is a kind of ultimate sloppyness...). In particular, you should: You can try to fix the package, but, again, this requires some XML and XML Schema skills.
xmlns:xml...
declarations in all the *.xsd files (probably optional)imscp_rootv1p1p2.xsd
, replace: <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="ims_xml.xsd"/>
by
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
ims_xml.xsd
by the contents of http://www.w3.org/2001/03/xml.xsd (not tested)Moodle > 2.0 handles SCORM 1.2 packages quite nicely. However, just to be clear: as of April 2014 it neither supports SCORM 2004 nor the more recent TLA/Experience API (Tincan).
Nevertheless SCORM 1.2 packages can fail for various reasons, for example:
imsmanifest.xml
and adlcp_rootv1p2.xsd
). Check if the package is in some subdirectory and rezip the one.imsmanifest.xml
may have syntax errors. The file name itself can be misspelled (e.g. capital letters), some XML tags are used but left empty (See also the section above!). In your authoring tool, make sure to fill in all meta information. E.g. this can fix problems with Articulate products....Read also:
See Database of Tools, Comments, and Ratings (adlCommmunity).