IMS Content Packaging

The educational technology and digital learning wiki
Revision as of 16:04, 23 February 2012 by Daniel K. Schneider (talk | contribs) (→‎Editing Tools)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


Content packs are a kind of learning object and IMS Content Packaging has the following objectives:

  • allow transfer of e-learning contents from one system to an other (interoperability)
  • allow to import/export contents into/from a [learning management system]. Therefore also be able to use an independent editing tool.

NOTE: IMS Content packaging does not specify any pedagogical recommendations or standards.

Content Packaging is an evolving and extensible standard. Therefore, make sure that you know what version you plan to build / import / export and more importantly what kinds of extensions various profiles adopt !!

IMS Content packaging is a very popular e-learning standard

  • IMS Content Packaging 1.1.2 is adopted by ADL's SCORM 1.2
  • IMS Content Packaging 1.1.4 by SCORM 2004
See also
  • The standards article that contains a summary table of interrelated standards
  • The SCORM 1.2 tutorial that introduces the SCORM 1.2 CAM and RTE architecture

Package architecture overview

A Package Interchange File (PIF) is a zip file (recommended, other formats are also allowed):

  1. File resources that include
    • All your assets (contents) needed, e.g. HTML pages, pictures, Flash Animations, PPT (whatever, the idea is that you take formats that your client can handle). You may use sub-directories
    • Schema files (that formally define all the vocabularies used in the manifest file (see next item).
  2. A special file in the zip is imsmanifest.xml containing:
    • a meta-data section <metadata />: describes the package as a whole.
    • a resource list <resources />: containing references to all of the actual resources and media elements needed for a manifest (files), including meta-data describing these resources, and references to any external files (URLs).
    • an organizations section: describing zero, one, or multiple learning sequences, i.e. organizations of the content within a manifest, i.e. information that is used to "play" the contents. There is a tree-based default organization for learning items which in turn refer to resources (assets). However, this section can also contain IMS Simple Sequencing or IMS Learning Design organization or any other future standard.
    • (sub)manifests, that can do the same for subpackages.

Here is a picture taken from the IMS Content Packaging Best Practice and Implementation Guide Version 1.1.4 of October 2004 that shows an overview of the Package Interchange File (PIF) architecture:

IMS Content Packaging 1 1.gif

Technical details

Firstly, you must understand that IMS CP can be (and is) extended in various ways:

  • IMS itself defines languages for pedagogical sequencing (content organization). E.g. the IMS Simple Sequencing binding defines a unique XML namespace (see below) for sequencing elements to be included in the organizations part. Therefore, elements in the Simple Sequencing namespace can be considered as extending the functionality of Content Packaging to included additional sequencing information.
  • The default organization vocabulary can be extended like in SCORM 1.2. SCORM adds additional elements (in particular to the <item> element), plus the distinction between ordinary assets and SCOs (resources that can interact with the LMS).

An example

We will use The RELOAD Test Package distributed by Reload to assist learning the Reload Editor and made by Dr. Colin D. Milligan.

Inside the zip

The zip file contains all files that are needed to define an older IMS 1.1 Content Package using IMS 1.2.2 Metadata

  • Three *.xsd schema files, i.e. XML grammars needed to formally validate the contents
  • The imsmanifest.xml file, i.e. the definition of the content package.
  • All contents
Contents of a simple IMS CP *.zip archive

We slightly altered this example to make it simpler and to use a more recent version of IMS CP and IEEE Metadata. In particular we:

  • changed the meta Metadata information
  • removed some items of the sequence and associated references and contents
  • used more readable identifiers
The (altered) IMS Manifest in the reload editor
The simple testpackage in the reload editor
Contents of the (altered) manifest
 <manifest xmlns=""
           xsi:schemaLocation=" imscp_v1p1.xsd

  <!-- ********************* METADATA SECTION *********************** -->
          <imsmd:langstring xml:lang="en">Simple IMS 1.1.4 Content Package</imsmd:langstring>
            <imsmd:source><imsmd:langstring xml:lang="en">LOMv1.0</imsmd:langstring></imsmd:source>
            <imsmd:value><imsmd:langstring xml:lang="x-none">Creator</imsmd:langstring></imsmd:value>
          <imsmd:centity><imsmd:vcard>Daniel K. Schneider - 
                      adapted from Colin D. Milligan's Reload example</imsmd:vcard></imsmd:centity>
          <imsmd:date><imsmd:datetime>december 2006</imsmd:datetime></imsmd:date>
      <imsmd:technical> <imsmd:format>text/html</imsmd:format> </imsmd:technical>
            <imsmd:langstring xml:lang="en">LOMv1.0</imsmd:langstring>
          <imsmd:value> <imsmd:langstring xml:lang="x-none">Expositive</imsmd:langstring> </imsmd:value>
          <imsmd:langstring xml:lang="en">This is total freeware.</imsmd:langstring>

  <!-- ********************* ORGANISATION SECTION *********************** -->
  <!-- Note: The orginal examples had 7 elements - mod. by Daniel K. Schneider -->
  <organizations default="learning_sequence_1">
    <!-- The one learning sequence defined: learner can look at three pictures -->
    <organization identifier="learning_sequence_1" structure="hierarchical">
      <title>Summer Pictures</title>
      <!-- The 3 items of the learning sequence. Each item refers to a single resource -->
      <item identifier="ITEM-1" isvisible="true" identifierref="RES-1">
        <title>Loch Katrine</title>
      <item identifier="ITEM-2" isvisible="true" identifierref="RES-2">
        <title>Ben Ledi</title>
      <item identifier="ITEM-3" isvisible="true" identifierref="RES-3">
        <title>Jencks Earthwork</title>

  <!-- ********************* RESOURCES SECTION *********************** -->
    <!-- Each resource refers to a file to be displayed and includes all the dependent resources
         that are needed to display this file, including the file itself -->
    <resource identifier="RES-1" type="webcontent" href="five.html">
      <file href="five.html" />
      <file href="supp/reloadhelp.css" />
      <file href="supp/reloadeditoricon.gif" />
      <file href="supp/trossachs.jpg" />
    <resource identifier="RES-2" type="webcontent" href="three.html">
      <file href="three.html" />
      <file href="supp/reloadhelp.css" />
      <file href="supp/reloadeditoricon.gif" />
      <file href="supp/benledi.jpg" />
    <resource identifier="RES-3" type="webcontent" href="six.html">
      <file href="six.html" />
      <file href="supp/reloadhelp.css" />
      <file href="supp/reloadeditoricon.gif" />
      <file href="supp/jencks.jpg" />

XML namespaces

Namespaces are important constructs of the XML formalism. It allows definition of "languages" like IMS Content Packages that include various other vocabularies. It also allows to let a specification say something like: "Other organizations can extend this and and that by adding their own namespaced elements". This is exactly what SCORM 1.2 does.

Lets have a look at the attributes of the manifest element of aboves simple example

<manifest xmlns=""


means that all non-namespaced elements belong to the IMS Content Packaging 1.1.x vocabulary, e.g. "manifest", "organizations", "organization", "item"


means that all elements that are prefixed with imsmd belong to the IMS Metadata specification


XMLSchema-instance is a W3C standard that's used to declare [XML Schema]s


tells the client where to look for the formal definition of vocabularies used (XML Schemas), both a name (the URL) and the name of a file in the content pack are given.

It is important to understand that these can change according to what version of IMS CP you use and of what other vocabularies are included.

Finally, most URLs you may want to click on are broken. These are just unique names for standards. Of course it's bad practice not to provide at least an explanation page like the W3C does (e.g. DSchneider believes that e-learning people are not open to the web as stable information and communication space (and this is one of the reasons why he isn't very fond of this sub-field of educational technology).

The simple example with IEEE LOM and IMS 1.1
<manifest xmlns=""
          xsi:schemaLocation=" imscp_v1p2.xsd 
An example with SCORM 1.2 contents
<manifest identifier="Manifest" version="1.1"
A SCORM 2004 (1st edition, SCORM 1.3 version) example

(from Rustici sofware)

<manifest identifier="RSSCA" 
          xsi:schemaLocation=" imscp_v1p1.xsd

A word of warning

(By DSchneider)

  • I found it difficult to validate a content package. E.g. the above example does not validate in the Reload Editor. IMS CP 1.2 does not validate if you use MetaData. Somehow all earlier IMS CP XSD versions plus all the metadata XSDs seem to be broken.
  • These problems seem to stem the fact the people from IMS deliberatly started to write wrong XSD code in order to cope with the broken XML Spy editor. I rarely managed to validate any example files without fixing either or both the XML and XSD files. I really am fed up with this kind of behavior and sloppy standards. - Daniel K. Schneider 19:15, 20 October 2007 (MEST).

To fix broken IMS XSD schemas you can try this:

  • Replace all instances of




  • Replace all instances of
 <xsd:import namespace="" schemaLocation="ims_xml.xsd"/>


<xsd:import namespace = "" schemaLocation = ""/>

In any case, it is crucial:

  • To define all needed namespaces as attributes of the manifest element
  • To define locations for XML Schemas (*.xsd) files
  • To include these files in the package (although I don't know if this is mandatory, but it certainly would make validation easier).
  • To make sure that you work with the latest sub-versions for each standard (if your LMS can handle them).


Run Time environments

Usually a Content Package is imported into a Learning management system, but there are also external players handy for platform independent authoring or even for off-line viewing (e.g. the "reload player"). The IMS specification refers to these systems as Learning technology system (LTS)

In principle (and this is where certain LMS make misleading claims about IMS/Scorm compatibility), most IMS Content Packages are not just displayed. They may contain:

  • support for SCORM 1.2 extensions that support user tracking and Contents-LMS interaction (e.g. remember where the user was last time he accessed contents, or register scores), conditional access to resources (prerequisite scripting), etc.
  • more sophisticated IMS sponsored organizations, like IMS Simple Sequencing or IMS Learning Design
  • In principle, a player also should let the user choose between different organizations,

In fall 2005, DKS tried to import IMS Packages found on the Web or made with Reload into some open source systems and was quite dismayed by the result. Sometimes fixing the manifest of badly authored SCORM packages can do the trick (but this is not easy, you may have to replace for example the RTE library).

By december 2006 at least many platforms seem to support SCORM 1.2. The picture regarding IMS simple sequencing (e.g. with SCORM 2004) is not so good and regarding IMS Learning Design the situation is really bad.

See also: Learning management systems.

Editing Tools

Content Assemblers:

End-user editors: