QTI -- Implementation of IMS Question and Test Interoperability Standard
Implementation of IMS Question and Test Interoperability Standard
For a client project, we needed to allow the client to capture and deploy complex forms. As the requirements were intricate and sure to grow, we decided to look around for a standard that we could rely on. We found the IMS Global Learning Consortium, Inc. (IMS) , a standards-making industry consortium. They have two goals:
- Defining the technical specifications for interoperability of applications and services in distributed learning, and
- supporting the incorporation of the IMS specifications into products and services worldwide.
One of their standards is the Question & Test Interoperability Specification , which we began to implement. This specification provides a standard XML language for describing questions and tests.
ZQTI and QTIEditor: our implementation
We implemented three modules:
- a through-the-web editor for QTI questionnaires, based on the editor of Infrae's Silva CMS . The editor allows a user to build a questionnaire consisting of multiple sections, fill-in-the-blank questions, and multiple-choice questions.
- ZQTI, a python product that imports QTI XML as a tree of Zope objects, and renders them as HTML form(s).
pyqti
, a python module that installs insite-packages
. ZQTI is a Zope wrapper around this. The intention is that as little as possible of our QTI implementation is Zope-specific.
The XML document edited by the editor is transformed to QTI XML, and imported by ZQTI. The editor represents a simplified view of the extremely general QTI specification.
So far, we have a client-specific subset of the specification up and running. Here are some screenshots:
- The editor, editing a questionnaire:
- The rendered questionnaire being filled in:
- The questionnaire in the ZMI:
(Note that the icons in this screenshot are just placeholders lifted from the (very nice) titanium icon set for Plone )
Dependencies
Our work builds on some existing Zope Products, namely:
- OrderedObjectManager, XMLWidgets, ParsedXML
- we are writing unit tests using ZopeTestCase.