Wednesday, February 28, 2007

Why does my SCORM course display an "Unable to find an API adapter" message?

When a SCORM course is packaged in a zip file (sometimes called a PIF, which stands for Package Interchange Format), the package needs to contain a manifest file named imsmanifest.xml. This file is used by delivery systems such as EKP to understand the contents of the package.

A SCORM course contains one or more resources (roughly speaking, the "lessons" in the course). In SCORM 1.2, each resource is either a sharable content object (SCO) or an asset. A SCO is specially designed to communicate with a learning management system (LMS)—for example by informing the LMS about the learner's test scores or other progress information—which it does using JavaScript calls. On the other hand, an asset is not specially designed to communicate with an LMS—essentially, it is just regular web content.

The manifest file contains information about each resource, together with an indication of whether each resource is a SCO or an asset. A typical XML element for a resource might look as shown below.

<resource identifier="R1" type="webcontent"
        adlcp:scormtype="sco" href="sco01.html">

Note the adlcp:scormtype attribute. There are two possible values for this attribute, sco and asset, corresponding with the two resource types described above. If the type is specified as sco, EKP will provide a JavaScript object called the API adapter, which the SCO can use to communicate with EKP. If the type is specified as asset, EKP assumes that the resource is not designed to communicate with an LMS using JavaScript, and therefore does not provide the API adapter. (Instead, EKP provides a button labeled Mark As Completed, which the learner can use to indicate that they have completed the activity.)

In particular, note that if the adlcp:scormtype attribute is omitted, EKP assumes that the resource is an asset, and therefore does not provide the API adapter.

If you see an error message that reads Unable to find an API adapter or similar when launching a course that has been imported from a content package, it might be that either the resource has incorrectly been tagged as an asset, or the adlcp:scormtype attribute is missing entirely. In this case, the problem can be fixed by manually editing the imsmanifest.xml file to include the correct attribute values for each resource.

There's one final XML technicality to be aware of. In order ensure that the attribute name adlcp:scormtype can be understood without ambiguity by an XML processor, it's necessary to ensure that the XML file contains a namespace declaration that corresponds with the namespace prefix adlcp. This declaration takes the form of an XML attribute that is usually placed on the root element of the file. The attribute is as shown below.

xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_rootv1p2"

The initial opening tag of a manifest file that contains this attribute might look as shown below.

<manifest identifier="M1" version="1.1"
    xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
    xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_rootv1p2">

Post a Comment