Creating an IMS Course Package - A step-by-step look at the process
By Rafi Syed
Content Conversion Specialist
Desire2Learn

Rafi Syed
Desire2Learn Content Conversion Specialist
The IMS Global Learning Consortium is a non-profit organization that promotes innovation, research, and interoperability between Learning Management Systems. The IMS standards allow a course creator to define modules and topics, discussion forums, quizzes and questions and many other features of a course. A course package that is based on the IMS specifications will have a similar structure and appearance when it is imported into an IMS-compliant learning environment such as Desire2Learn.
There are two main IMS standards. The IMS CP specification defines a Course Package while the IMS QTI (Quiz/Test Interoperability) standard defines 6 main types of questions: Long Answer, Short Answer, Multiple Choice, Multi-Select, Matching and True or False.
To be considered an “IMS-Compliant” course package, the zipped folder must include an xml document entitled "imsmanifest.xml" at the root of the folder. This imsmanifest file describes the course structure and links content topics and modules with their respective files. The package also contains all of the associated resources which can include web pages, images, movies, Flash and Shockwave objects and any other files that are supported by the LMS as valid course content.
The following example shows how to create an imsmanifest for a simple course. We assume the content files have already been created and are ready to be packaged.
Online courses can be created using a variety of formats that range from simple HTML files to multimedia such as Flash objects. In this example, assume the content files are called Topic1.html, Topic2.html and Topic3.html.
To begin, make a list of the content files in the order they are to appear in the course
Topic1.html |
Topic2.html |
Topic3.html |
Above the list of course files, list the corresponding content topics as they would appear in the course.
|
The Beginning |
|
The Middle |
|
The End
|
|
Topic1.html
|
|
Topic2.html
|
|
Topic3.html
|
Now add <title> tags to each of the content topics in the first list.
| <title>The Beginning</title> |
| <title>The Middle</title> |
| <title>The End</title> |
| Topic1.html |
| Topic2.html |
| Topic3.html |
In the manifest, the content topics are equivalent to items.
The item element has the following attributes:
identifier: a unique name that identifies the Item, e.g. ITEM1
identifierref: the name of an associated resource e.g. RESOURCE1
isVisible: an optional value for whether the item is visible in Content. By default this value is True.
| <item identifier="ITEM1" identifierref="RESOURCE1" isvisible="true"> |
| <title>The Beginning</title> |
| </item> |
| <item identifier="ITEM2" identifierref="RESOURCE1" isvisible="true"> |
| <title>The Middle</title> |
| </item> |
| <item identifier="ITEM3" identifierref="RESOURCE1" isvisible="true"> |
| <title>The End</title> |
| </item> |
| Topic1.html |
| Topic2.html |
| Topic3.html |
Modules are defined in the same manner as Topics by using the item and title elements, except modules do not have an identifierref attribute to a resource.
In Desire2Learn, content topics must be under at least one parent module. If there are no modules defined in the manifest, the topics are automatically placed under separate modules by the import process.
| <item identifier="MODULE_1" isvisible="true"> |
| <title>Module 1</title> |
| <item identifier="ITEM1" identifierref="RESOURCE1" isvisible="true"> |
| <title>The Beginning</title> |
| </item> |
| <item identifier="ITEM2" identifierref="RESOURCE2" isvisible="true"> |
| <title>The Middle</title> |
| </item> |
| <item identifier="ITEM3" identifierref="RESOURCE3" isvisible="true"> |
| <title>The End</title> |
| <item> |
| </item> |
| Topic1.html |
| Topic2.html |
| Topic3.html |
The organization element is used to group certain items together within the manifest. For example, this element can be used to separate content items from dropbox items.
Organizations and other container elements are internal to the manifest file and are required by the IMS specifications. They are not used by the import process to create visible components in the actual course. A unique identifier (name) is normally required to differentiate each organization element. This identifier is any non-empty string up to 256 characters that is not already in use elsewhere in the manifest.
Since a manifest can include more than one organization element, a parent Organizations container is used to group them together. Only one Organizations element is allowed within a manifest. This Organizations element includes an attribute called "default" which has a similar function as that of an identifier. It can be any unique non-empty string up to 256 characters.
<organizations default="a_unique_string"> : a container for organization elements
<organization identifier="a_unique_string"> : a container for item elements
| <organizations default="d2l_orgs"> |
| <organization identifier="d2l_org"> |
| <item identifier="MODULE_1" isvisible="true"> |
| <title>Module 1</title> |
| <item identifier="ITEM1" identifierref="RESOURCE1" isvisible="true"> |
| <title>The Beginning</title> |
| </item> |
| <item identifier="ITEM2" identifierref="RESOURCE2" isvisible="true"> |
| <title>The Middle</title> |
| </item> |
| <item identifier="ITEM3" identifierref="RESOURCE3" isvisible="true"> |
| <title>The End</title> |
| <item> |
| </item> |
| </organization> |
| </organizations> |
| Topic1.html |
| Topic2.html |
| Topic3.html |
A resource is an element that references HTML, PDF, Word Docs or other course files that are included in the package. In Desire2Learn, a content topic is a link to a file stored in the course directory. These resources, when imported, are the actual course files.
The resource element has 3 attributes:
identifier: a unique name that identifies the resource (up to 256 characters).
type: refers to the type of resource. For D2L course packages, this value is always "webcontent"
href: the location of the actual resource file within the package, in relation to the manifest file, i.e. href="filename.html"
Recall: a Content Topic is an <item> in the manifest. It references a <resource> using the identifierref attribute.
The identifierref of the item matches the identifier of the resource.
All resource elements are contained within a parent <resources> element, similar to the <organizations> element.
| <organizations default="d2l_orgs"> |
| <organization identifier="d2l_org"> |
| <item identifier="MODULE_1" isvisible="true"> |
| <title>Module 1</title> |
| <item identifier="ITEM1" identifierref="RESOURCE1" isvisible="true"> |
| <title>The Beginning</title> |
| </item> |
| <item identifier="ITEM2" identifierref="RESOURCE2" isvisible="true"> |
| <title>The Middle</title> |
| </item> |
| <item identifier="ITEM3" identifierref="RESOURCE3" isvisible="true"> |
| <title>The End</title> |
| <item> |
| </item> |
| </organization> |
| </organizations> |
| <resources> |
| <resource identifier="RESOURCE1" type="webcontent" href="Topic1.html" /> |
| <resource identifier="RESOURCE2" type="webcontent" href="Topic1.html" /> |
| <resource identifier="RESOURCE3" type="webcontent" href="Topic1.html" /> |
| </resources> |
The final step is to define the file as a valid IMS manifest.
The first line of the manifest identifies the file as an XML document. It lists the version of XML used, and the encoding format for the characters (in this case, Unicode 8-bit). This information tells the Learning Management System how to read the manifest file during the import process:
<?xml version="1.0" encoding="UTF-8" ?>
The outermost container is the manifest element which encloses all other elements. This tag is always the second and last lines of the imsmanifest, as shown in the example below.
Attributes:
identifier: a unique non-empty string that indicates the name of the manifest
xmlns = http://www.imsglobal.org/xsd/imscp_v1p1: a reference to the IMS namespace
xmlns:d2l_2p0 = http://desire2learn.com/xsd/d2lcp_v2p0: a reference to the D2L namespace
| <?xml version="1.0" encoding="UTF-8" ?> |
| <manifest identifier="IMS_Course_Package" |
| xmlns="http://www.imsglobal.org/xsd/imscp_v1p1"> |
| xmlns:d2l_2p0="http://desire2learn.com/xsd/d2lcp_v2p0"> |
| <organizations default="d2l_orgs"> |
| <organization identifier="d2l_org"> |
| <item identifier="MODULE_1" isvisible="true"> |
| <title>Module 1</title> |
| <item identifier="ITEM1" identifierref="RESOURCE1" isvisible="true"> |
| <title>The Beginning</title> |
| </item> |
| <item identifier="ITEM2" identifierref="RESOURCE2" isvisible="true"> |
| <title>The Middle</title> |
| </item> |
| <item identifier="ITEM3" identifierref="RESOURCE3" isvisible="true"> |
| <title>The End</title> |
| <item> |
| </item> |
| </organization> |
| </organizations> |
| <resources> |
| <resource identifier="RESOURCE1" type="webcontent" href="Topic1.html" /> |
| <resource identifier="RESOURCE2" type="webcontent" href="Topic1.html" /> |
| <resource identifier="RESOURCE3" type="webcontent" href="Topic1.html" /> |
| </resources> |
| </manifest> |
This completes the manifest file which tells the import tool what files are included in the package and where to place them when imported into the Learning Management System.
Final steps:
1. Save this file as imsmanifest.xml
2. Create a new folder and save the imsmanifest at the root, and include all of the linked resource files.
3. Compress the package as a zipped file, by right clicking and selecting Send to: Compressed (zipped) folder.
4. This is now an IMS-Compliant course package that can be imported into Desire2Learn.
Download example course package
This article is intended to provide a general understanding of the basic XML elements used in the IMS course package specifications.
For further information or help with troubleshooting packages, please contact Content@Desire2Learn.com


