IMS Logo

IMS Question and Test Interoperability Information Model

Version 2.0 Final Specification

Copyright © 2005 IMS Global Learning Consortium, Inc. All Rights Reserved.
The IMS Logo is a registered trademark of IMS/GLC.
Document Name: IMS Question and Test Interoperability Information Model
Revision: 24 January 2005


Date Issued:
24 January 2005
Latest version:
http://www.imsglobal.org/question/qti_v2p0/imsqti_infov2p0.html
Register comments or implementations:
http://www.imsglobal.org/developers/ims/imsforum/categories.cfm?catid=23

IPR and Distribution Notices

Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the specification set forth in this document, and to provide supporting documentation.

IMS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on IMS's procedures with respect to rights in IMS specifications can be found at the IMS Intellectual Property Rights web page: http://www.imsglobal.org/ipr/imsipr_policyFinal.pdf.

Copyright © IMS Global Learning Consortium 2006. All Rights Reserved.

If you wish to distribute this document or use this document to implement a product or service, you must complete a valid license registration with IMS and receive an email from IMS granting the license. To register, follow the instructions on the IMS website: http://www.imsglobal.org/specificationdownload.cfm.

This document may be copied and furnished to others by Licensee organizations registered on the IMS website provided that the above copyright notice and this paragraph are included on all such copies. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to IMS, except as needed for the purpose of developing IMS specifications, under the auspices of a chartered IMS work group.

Use of this specification to develop products or services is governed by the license with IMS found on the IMS website: http://www.imsglobal.org/question/qti_v2p0/qtiv2p0speclicense.html.

The limited permissions granted above are perpetual and will not be revoked by IMS or its successors or assigns.

THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTER'S OWN RISK, AND NEITHER THE CONSORTIUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION.

Table of Contents

1. Introduction
2. References
3. Definitions
4. Items
5. Item Variables
5.1. Response Variables
5.2. Outcome Variables
6. Content Model
6.1. Basic Classes
6.2. XHTML Elements
6.2.1. Text Elements
6.2.2. List Elements
6.2.3. Object Elements
6.2.4. Presentation Elements
6.2.5. Table Elements
6.2.6. Image Element
6.2.7. Hypertext Element
6.3. MathML
6.3.1. Combining Template Variables and MathML
6.4. Variable Content
6.4.1. Number Formatting Rules
6.5. Formatting Items with Stylesheets
7. Interactions
7.1. Simple Interactions
7.2. Text-based Interactions
7.3. Graphical Interactions
7.4. Miscellaneous Interactions
7.5. Alternative Ways to End an Attempt
8. Response Processing
8.1. Response Processing Templates
8.1.1. Standard Templates
8.2. Generalized Response Processing
9. Modal Feedback
10. Expressions
10.1. Operators
11. Item Templates
11.1. Using Template Variables in an the Item's Body
11.2. Template Processing
12. Basic Data Types

1. Introduction

2. References

CMI
IEEE 1484.11.1, Standard for Learning Technology - Data Model for Content Object Communication
ISO11404
ISO11404:1996 Information technology — Programming languages, their environments and system software interfaces — Language-independent datatypes
Published: 1996
ISO8601
ISO8601:2000 Data elements and interchange formats – Information interchange – Representation of dates and times
Published: 2000
ISO_9899
ISO/IEC 9899:1999 Programming Languages - C
MathML
Mathematical Markup Language (MathML), Version Version 2.0 (Second Edition)
http://www.w3.org/TR/2003/REC-MathML2-20031021/
Published: 2003-10-21
RFC2045
RFC 2045-2048 Multipurpose Internet Mail Extensions (MIME)
RR
IMS Question & Test Interoperability: Results Reporting Specification, Version 1.2
Published: 2002-02
URI
RFC 2396 Uniform Resource Identifiers (URI): Generic Syntax
Published: 1998-08
XHTML
XHTML 1.1: The Extensible HyperText Markup Language
XHTML_MOD
XHTML Modularization
http://www.w3.org/MarkUp/modularization
XML
Extensible Markup Language (XML), Version 1.0 (second edition)
Published: 2000-10
XML_SCHEMA2
XML Schema Part 2: Datatypes
http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/

3. Definitions

Adaptive Item

An adaptive item is an Item that adapts either its appearance, its scoring (Response Processing) or both in response to each of the candidate's Attempts. For example, an adaptive item may start by prompting the candidate with a box for free-text entry but, on receiving an unsatisfactory answer, present a simple choice Interaction instead and award fewer marks for subsequently identifying the correct response. Adaptivity allows authors to create items for use in formative situations which both help to guide candidates through a given task while also providing an Outcome that takes into consideration their path, enabling better subsequent content sequencing decisions to be made.

Adaptive Test

Adaptive Tests are out of scope for this specification.

Assessment

An Assessment is equivalent to a 'Test'. It contains the collection of Items that are used to determine the level of mastery, or otherwise, that a participant has on a particular subject. The Assessment contains all of the necessary instructions to enable variable sequencing of the Items and the corresponding aggregated scoring to produce the final test score. Assessments are out of scope for this document.

Assessment Delivery System

A system for the administration and delivery of assessments to candidates. See also Delivery Engine.

Attempt

An attempt (at an Item) is the process by which the Candidate interacts with an item in one or more Candidate Sessions, possibly assigning values to or updating the associated Response Variables.

Authoring System

A system used by authors for creating and editing Items.

Base-type

A base-type is a predefined data type that defines a value set from which values for Item Variables are drawn. These values are indivisible with respect to the runtime model described by this specification.

Basic Item

A basic item is an Item that contains one and only one Interaction.

Candidate

A person that participates in a test, assessment or exam by answering questions. See also the actor candidate.

Candidate Session

A period of time during which the candidate is interacting with the Item as part of an Attempt. An attempt may consist of more than one candidate session. For example, candidates that are not sure of the answer to one question may navigate to a second question in the same test and return to the first one later. When they leave the first question they terminate the candidate session but they do not terminate the Attempt. The attempt is simply suspended until a subsequent candidate session concludes it, triggering Response Processing and (possibly) Feedback.

Cloning Engine

A cloning engine is a system for creating multiple similar items (Item Clones) from an Item Template.

Composite Item

A composite item is an Item that contains more than one Interaction.

Container

A container is an aggregate data type that can contain multiple values of the primitive Base-types. Containers may be empty.

Delivery Engine

The process that coordinates the rendering and delivery of the Item(s) and the evaluation of the responses to produce scores and Feedback.

Feedback

Any material presented to the candidate conditionally based on the value of an Outcome Variable. See also Integrated Feedback and Modal Feedback

Interaction

Interactions allow the candidate to interact with the item. Through an interaction, the candidate selects or constructs a response. See also the class interaction.

Integrated Feedback

Integrated feedback is the name given to Feedback that is integrated into the item's itemBody. Unlike Modal Feedback the candidate is free to update their responses while viewing integrated feedback.

Item

The smallest exchangeable assessment object within this specification. An item is more than a 'Question' in that it contains the question and instructions to be presented, the responseProcessing to be applied to the candidates response(s) and the Feedback that may be presented (including hints and solutions). In this specification items are represented by the assessmentItem class and the term assessment item is used interchangeably for item.

Item Clone

Item Clones are items created by an Item Template.

Item Session

An item session is the accumulation of all the Attempts made by a candidate.

Item Template

Item templates are templates that can be used for producing large numbers of similar Items. Such items are often called cloned items. Item templates can be used to produce items by a special purpose Cloning Engine or, where Delivery Engines support them, be used directly to produce a dynamically chosen clone at the start of an Item Session. Each item cloned from an item template is identical except for the values given to a set of Template Variables. An item is therefore an item template if it declares one or more template variables and a contains set of Template Processing rules for assigning them values.

Item Variable

A variable that records part of the state of an Item Session. The candidate's responses and any outcomes assigned by Response Processing are stored in item variables. Item variables are also used to define Item Templates. See also the class itemVariable.

Material

Material means all static text, image or media objects that are intended for the user rather than being interpreted by a processing system. Interactions are not material.

Modal Feedback

Modal feedback is the name give to Feedback that is presented to the candidate on its own, as opposed to being integrated into the item's itemBody.

Multiple Response

A multiple response is a Response Variable that is a Container for multiple values all drawn from the value set defined by one of the Base-types. A multiple response is processed as an unordered list of these values. The list may be empty.

Non-adaptive Item

An non-adaptive item is an Item that does not adapt itself in response to the candidate's Attempts.

Ordered Response

An ordered response is a Response Variable that is a Container for multiple values all drawn from the value set defined by one of the Base-types. An ordered response is processed as an ordered list (sequence) of values. The list may be empty.

Outcome

The result of an assessment. For an Item, an outcome is represented by one or more Outcome Variables.

Outcome Variable

Outcome variables are declared by outcome declarations. Their value is set either from a default given in the declaration itself or by a response rule encountered during Response Processing. See also the class outcomeVariable.

Response Processing

The process by which the values of Response Variables are judged (scored) and the values of Outcome Variables are assigned.

Response Variable

Response variables are declared by response declarations and bound to Interactions in the Item body, they record the candidate's responses. See also the class responseVariable

Scoring Engine

The part of the assessment system that handles the scoring based on the Candidate's responses and the Response Processing rules.

Single Response

A single response is a Response Variable that can take a single value from the set of values defined by one of the Base-types.

Template Processing

A set of rules used to set the values of the Template Variables, typically involving some random process, and thereby select the specific clone to be used for an Item Session.

Template Variable

Template variables are declared by template declarations and used to record the values required to instantiate an item template. The values determine which clone from the set of similar items defined by an Item Template is being used for a given Item Session.

Test

See Assessment.

Time Dependent Item

A time dependent item is an Item that records the accumulated elapsed time for the Candidate Sessions in a Response Variable that is used during Response Processing.

Time Independent Item

A time independent item is an Item that does not record the amount of time spent by the Candidate completing it. In practice, this information may be collected by a Delivery Engine but it is not used for Response Processing and the method by which it is reported is outside the scope of this specification.

4. Items

Class : assessmentItem

Attribute : identifier [1]: string

Attribute : title [1]: string
The title of an assessmentItem is intended to enable the item to be selected in situations where the full text of the itemBody is not available, for example when a candidate is browsing a set of items to determine the order in which to attempt them. Therefore, delivery engines may reveal the title to candidates at any time but are not required to do so.

Attribute : label [0..1]: string256

Attribute : lang [0..1]: language

Attribute : adaptive [1]: boolean = false
Items are classified into Adaptive Items and Non-adaptive Items.

Attribute : timeDependent [1]: boolean

Attribute : toolName [0..1]: string256
The tool name attribute allows the tool creating the item to identify itself. Other processing systems may use this information to interpret the content of application specific data, such as labels on the elements of the item's itemBody.

Attribute : toolVersion [0..1]: string256
The tool version attribute allows the tool creating the item to identify its version. This value must only be interpreted in the context of the toolName

Contains : responseDeclaration [*]

Contains : outcomeDeclaration [*]

Contains : templateDeclaration [*]

Contains : templateProcessing [0..1]

Contains : stylesheet [0..*]

Contains : itemBody [0..1]

Contains : responseProcessing [0..1]

Contains : modalFeedback [*]

Item Sessions

Abstract class : itemSession

itemSession is an abstract class to help illustrate the requirements on Delivery Engines when delivering to candidates items that conform to this specification.

Associated with : assessmentItem [1]
An itemSession is associated with one and only one assessmentItem.

Attribute : completionStatus [1]: identifier
Delivery Engines must maintain the value of the built-in outcome variable completionStatus as part of the session state. It starts with the reserved value "not_attempted". At the start of the first attempt it changes the to the reserved value "unknown". It remains with this value for the duration of the item session unless set to a different value by a setOutcomeValue rule in responseProcessing. There are four permitted values: completed, incomplete, not_attempted and unknown. Any one of these values may be set during response processing, for definitions of the meanings see [CMI]. If an Adaptive Item sets completionStatus to complete then the session must be placed into the closed state, however, an itemSession is not required to wait for the complete signal before terminating, it may terminate in response to a direct request from the candidate, through running out of time or through some other exceptional circumstance. Similarly, Non-adaptive Items are not required to set a value for completionStatus, however, Adaptive Items must maintain a suitable value and should set completionStatus to "complete" to indicate when the cycle of interaction, response processing and feedback must stop. Delivery Engines are encouraged to use the value of completionStatus when communicating using [CMI]. See the accompanying integration guide for more details.

Attribute : duration [0..1]: float
Systems that support Time Dependent Items must record the duration of the session. The duration is defined as being the accumulated time (in seconds) of all Candidate Sessions for all Attempts. In other words the time between the beginning and the end of the itemSession minus any time the itemSession was in the suspended state. The resolution of the duration must be at least 1s and should be 0.1s or smaller. If the resolution is denoted by epsilon then each value of duration represents the range of values [duration,duration+epsilon). In other words, duration values are truncated. For items that are not time dependent duration must not be used.

Contains : itemVariable [*]
The itemSession keeps track of the current values assigned to all itemVariables. The values of completionStatus and duration are treated as special item variables. They share the same namespace as the item variables explicitly declared through variableDeclarations.

Contains : sessionContext [1]
An itemSession is also associated with a sessionContext which provides information about the candidate, when and where the session took place and so on.

The following diagram illustrates the user-perceived states of the itemSession. Not all states will apply to every scenario, for example feedback may not be provided for an item or it may not be allowed in the context in which the item is being used. Similarly, the candidate may not be permitted to review their responses and/or examine a model solution. In practice, systems may support only a limited number of the indicated state transitions and/or support other state transitions not shown here.

For system developers, an important first step in determining which requirements apply to their system is to identify which of the user-perceived states are supported in their system and to match the state transitions indicated in the diagram to their own event model.

Lifecycle of an Item Session

A delivery system notionally creates an instance of an itemSession object when it first becomes eligible for delivery to the candidate. The itemSession's state is then maintained and updated in response to the actions of the candidate until the session is over. At this point the state of the session is turned into a session report (or thrown away). A delivery system may also allow a session report from a past session to be used to re-create the session in order to allow a candidate's responses to be seen in the context of the item itself (and possibly compared to a solution).

The initial state of an itemSession represents the state after it has been determined that the item will be delivered to the candidate but before the delivery has taken place.

In a typical non-Adaptive Test the items are selected in advance and the candidate's interaction with all items is reported at the end of the test session, regardless of whether or not the candidate actually attempted all the items. In effect, itemSessions are created in the initial state for all items at the start of the test and are maintained in parallel. In an Adaptive Test the items that are to be presented are selected during the session based on the responses and outcomes associated with the items presented so far. Items are selected from a large pool and the delivery engine only reports the candidate's interaction with items that have actually been selected.

A candidate's interaction with an item is broken into 0 or more attempts. During each attempt the candidate interacts with the item through one or more candidate sessions. At the end of a candidate session the item is placed into the suspended state ready for the next candidate session. During a candidate session the itemSession is in the interacting state. Once an attempt has ended response processing takes place, after response processing a new attempt may be started.

For non-adaptive items, response processing may only be invoked a limited number of times, typically once. For adaptive items, no such limit is required because the response processing adapts the values it assigns to the outcome variables based on the path through the item. In both cases, each invocation of response processing indicates the end of an attempt. The appearance of the item's body, and whether any modal feedback is shown, is determined by the values of the outcomeVariables.

When no more attempts are allowed the itemSession passes into the closed state. Once in the closed state the values of the response variables are fixed. A delivery system or reporting tool may still allow the item to be presented after it has reached the closed state. This type of presentation takes place in the review state, summary feedback may also be visible at this point if response processing has taken place and set a suitable outcomeVariable.

Finally, for systems that support the display of solutions, the itemSession may pass into the solution state. In this state, the candidate's responses are temporarily replaced by the correct values supplied in the corresponding responseDeclarations (or NULL if none was declared).

Abstract class : sessionContext

Associated classes:
itemSession

The details of sessionContext will be application specific and are therefore outside the scope of this document. Applications that handle result reports using [RR] should consider the limits of the data model imposed on the context element in that specification.

5. Item Variables

Abstract class : variableDeclaration

Derived classes:
outcomeDeclaration, responseDeclaration, templateDeclaration

Variable Declarations

Item variables are declared by variable declarations. All variables must be declared except for the built-in session variables referred to below which are declared implicitly. The purpose of the declaration is to associate an identifier with the variable and to identify the runtime type of the variable's value. At runtime (i.e., during an itemSession) the value of the variable is notionally represented by a class derived from itemVariable

Attribute : identifier [1]: identifier
The identifiers of the built-in session variables are reserved. They are completionStatus and duration. All item variables declared in an item share the same namespace. Different items have different namespaces.

Attribute : cardinality [1]: cardinality
Each variable is either single valued or multi-valued. Multi-valued variables are referred to as containers and come in ordered, unordered and record types. See cardinality for more information.

Attribute : baseType [0..1]: baseType
The value space from which the variable's value can be drawn (or in the case of containers, from which the individual values are drawn) is identified with a baseType. The baseType selects one of a small set of predefined types that are considered to have atomic values within the runtime data model. Variables with record cardinality have no base-type.

Contains : defaultValue [0..1]
An optional default value for the variable. The point at which a variable is set to its default value varies depending on the type of item variable.

Abstract class : itemVariable

Derived classes:
outcomeVariable, responseVariable, templateVariable
Associated classes:
itemSession

Associated with : variableDeclaration [1]
At runtime, item variables are created in the itemSession each corresponding to a variableDeclaration in the corresponding assessmentItem.

Attribute : identifier [1]: identifier
The purpose of an itemVariable is to associate the runtime value of the variable with the variable's identifier and declaration. At runtime the variable has the cardinality and baseType given in the associated declaration

Contains : value [*]
An itemVariable may have no value at all, in which case it is said to have the special value NULL. For example, if the candidate has not yet had an opportunity to respond to an interaction then any associated responseVariable will have a NULL value. Empty containers and empty strings are always treated as NULL values.

Class : value

Associated classes:
ordinaryStatistic, defaultValue, correctResponse, itemVariable

A class that can represent a single value of any baseType in variable declarations. The base-type is defined by the baseType attribute of the declaration except in the case of variables with record cardinality.

Attribute : fieldIdentifier [0..1]: identifier
This attribute is used for specifying the field identifier for a value that forms part of a record.

Attribute : baseType [0..1]: baseType
This attribute is used for specifying the base-type of a value that forms part of a record.

Class : defaultValue

Associated classes:
variableDeclaration

Attribute : interpretation [0..1]: string
A human readable interpretation of the default value.

Contains : value [1..*]

Enumeration: cardinality

single

multiple

ordered

record

An expression or itemVariable can either be single-valued or multi-valued. A multi-valued expression (or variable) is called a container. A container contains a list of values, this list may be empty in which case it is treated as NULL. All the values in a multiple or ordered container are drawn from the same value set, however, containers may contain multiple occurrences of the same value. In other words, [A,B,B,C] is an acceptable value for a container. A container with cardinality multiple and value [A,B,C] is equivalent to a similar one with value [C,B,A] whereas these two values would be considered distinct for containers with cardinality ordered. When used as the value of a responseVariable this distinction is typified by the difference between selecting choices in a multi-response multi-choice task and ranking choices in an order objects task. In the language of [ISO11404] a container with multiple cardinality is a "bag-type", a container with ordered cardinality is a "sequence-type" and a container with record cardinality is a "record-type".

The record container type is a special container that contains a set of independent values each identified by its own identifier and having its own base-type. This specification does not make use of the record type directly however it is provided to enable customInteractions to manipulate more complex responses and customOperators to return more complex values.

Enumeration: baseType

A base-type is simply a description of a set of atomic values (atomic to this specification). Note that several of the baseTypes used to define the runtime data model have identical definitions to those of the basic data types used to define the values for attributes in the specification itself. The use of an enumeration to define the set of baseTypes used in the runtime model, as opposed to the use of classes with similar names, is designed to help distinguish between these two distinct levels of modeling.

identifier
The set of identifier values is the same as the set of values defined by the
identifier class

boolean
The set of boolean values is the same as the set of values defined by the
boolean class.

integer
The set of integer values is the same as the set of values defined by the
integer class.

float
The set of float values is the same as the set of values defined by the
float class.

string
The set of string values is the same as the set of values defined by the
string class.

point
A point value represents an integer tuple corresponding to a graphic point. The two integers correspond to the horizontal (x-axis) and vertical (y-axis) positions respectively. The up/down and left/right senses of the axes are context dependent.

pair
A pair value represents a pair of identifiers corresponding to an association between two objects. The association is undirected so (A,B) and (B,A) are equivalent.

directedPair
A directedPair value represents a pair of identifiers corresponding to a directed association between two objects. The two identifiers correspond to the source and destination objects.

duration
A duration value specifies a distance (in time) between two time points. In other words, a time period as defined by
[ISO8601]. Durations are measured in seconds and may have a fractional part.

file
A file value is any sequence of octets (bytes) qualified by a content-type and an optional filename given to the file (for example, by the candidate when uploading it as part of an
interaction). The content type of the file is one of the MIME types defined by [RFC2045].

uri
A URI value is a Uniform Resource Identifier as defined by
[URI].

Class : mapping

Associated classes:
responseDeclaration, categorizedStatistic

A special class used to create a mapping from a source set of any baseType to a single float. When mapping containers the result is the sum of the mapped values from the target set. See mapResponse for details.

Attribute : lowerBound [0..1]: float
The lower bound for the result of mapping a container. If unspecified there is no lower-bound.

Attribute : upperBound [0..1]: float
The upper bound for the result of mapping a container. If unspecified there is no upper-bound.

Attribute : defaultValue [1]: float = 0
The default value from the target set to be used when no explicit mapping for a source value is given.

Contains : mapEntry [1..*]
The map is defined by a set of mapEntries, each of which maps a single value from the source set onto a single float.

Class : mapEntry

Associated classes:
mapping

Attribute : mapKey [1]: value
The source value

Attribute : mappedValue [1]: float
The mapped value

5.1. Response Variables

Class : responseDeclaration (variableDeclaration)

Associated classes:
assessmentItem

Response variables are declared by response declarations and bound to interactions in the itemBody.

itemSession defines one built-in pre-bound response variable: duration.

Contains : correctResponse [0..1]
A response declaration may assign an optional correctResponse. This value may indicate the only possible value of the response variable to be considered correct or merely just a correct value. For responses that are being measured against a more complex scale than correct/incorrect this value should be set to the (or an) optimal value. Finally, for responses for which no such optimal value is defined the correctResponse must be omitted. If a delivery system supports the display of a solution then it should display the correct values of responses (where defined) to the candidate. When correct values are displayed they must be clearly distinguished from the candidate's own responses (which may be hidden completely if necessary).

Contains : mapping [0..1]
The mapping provides a mapping from the set of base values to a set of numeric values for the purposes of response processing. See mapResponse for information on how to use the mapping.

Contains : areaMapping [0..1]
The areaMapping, which may only be present in declarations of variables with baseType point, provides an alternative form of mapping which tests against areas of the coordinate space instead of mapping single values (i.e., single points).

Class : correctResponse

Associated classes:
responseDeclaration

Attribute : interpretation [0..1]: string
A human readable interpretation of the correct value.

Contains : value [1..*]

Class : areaMapping

Associated classes:
responseDeclaration

A special class used to create a mapping from a source set of point values to a target set of float values. When mapping containers the result is the sum of the mapped values from the target set. See mapResponsePoint for details. The attributes have the same meaning as the similarly named attributes on mapping.

Attribute : lowerBound [0..1]: float

Attribute : upperBound [0..1]: float

Attribute : defaultValue [1]: float = 0

Contains : areaMapEntry [1..*] {ordered}
The map is defined by a set of areaMapEntries, each of which maps an area of the coordinate space onto a single float. When mapping points each area is tested in turn, with those listed first taking priority in the case where areas overlap and a point falls in the intersection.

Class : areaMapEntry

Associated classes:
areaMapping

Attribute : shape [1]: shape
The shape of the area.

Attribute : coords [1]: coords
The size and position of the area, interpreted in conjunction with the shape.

Attribute : mappedValue [1]: float
The mapped value

Abstract class : responseVariable (itemVariable)

At runtime, response variables are instantiated as part of an itemSession. Their values are always initialized to NULL (no value) regardless of whether or not a default value is given in the declaration. A response variable with a NULL value indicates that the candidate has not offered a response, either because they have not attempted the item at all or because they have attempted it and chosen not to provide a response.

If a default value has been provided for a response variable then the variable is set to this value at the start of the first attempt. If the candidate never attempts the item, in other words, the itemSession passes straight from the initial state to the closed state without going through the interacting state, then the response variable remains NULL and the default value is never used.

Implementors of Delivery Engine's should take care when implementing user interfaces for items with default response variable values. If the associated interaction is left in the default state (i.e., representing the default value) then it is important that the system is confident that the candidate intended to submit this value and has not simply failed to notice that a default has been provided. This is especially true if the candidate's attempt ended due to some external event, such as running out of time. The techniques required to distinguish between these cases are an issue for user interface design and are therefore out of scope for this specification.

5.2. Outcome Variables

Class : outcomeDeclaration (variableDeclaration)

Associated classes:
assessmentItem

Outcome variables are declared by outcome declarations. Their value is set either from a default given in the declaration itself or by a responseRule during responseProcessing.

itemSession defines one built-in outcome variable: completionStatus.

Attribute : interpretation [0..1]: string
A human interpretation of the variable's value.

Attribute : longInterpretation [0..1]: uri
An optional link to an extended interpretation of the outcome variable's value.

Attribute : normalMaximum [0..1]: float
The normalMaximum attribute optionally defines the maximum magnitude of numeric outcome variables, it must be a positive value. If given, the outcome's value can be divided by normalMaximum and then truncated (if necessary) to obtain a normalized score in the range [-1.0,1.0]. normalMaximum has no affect on responseProcessing or the values that the outcome variable itself can take.

Abstract class : outcomeVariable (itemVariable)

Outcome variables are instantiated as part of an itemSession. Their values may be initialized with a default value and/or set during responseProcessing. If no default value is given in the declaration then the outcome variable is initialized to NULL unless the outcome is of a numeric type (integer or float) in which case it is initialized to 0.

For Non-adaptive Items, the values of the outcome variables are reset to their default values prior to each invocation of responseProcessing. For Adaptive Items the outcome variables retain the values that were assigned to them during the previous invocation of response processing. For more information, see Response Processing.

6. Content Model

Class : itemBody (bodyElement)

Associated classes:
assessmentItem

Contains : block [*]

The item body contains the text, graphics, media objects and interactions that describe the item's content and information about how it is structured. The body is presented by combining it with stylesheet information, either explicitly or implicitly using the default style rules of the delivery or authoring system.

The body must be presented to the candidate when the associated itemSession is in the interacting state. In this state, the candidate must be able to interact with each of the visible interactions and therefore set or update the values of the associated responseVariables. The body may be presented to the candidate when the item session is in the closed or review state. In these states, although the candidate's responses should be visible, the interactions must be disabled so as to prevent the candidate from setting or updating the values of the associated response variables. Finally, the body may be presented to the candidate in the solution state, in which case the correct values of the response variables must be visible and the associated interactions disabled.

The content model employed by this specification uses many concepts taken directly from [XHTML]. In effect, this part of the specification defines a profile of XHTML. Only some of the elements defined in XHTML are allowable in an assessmentItem and of those that are, some have additional constraints placed on their attributes. Finally, this specification defines some new elements which are used to represent the interactions and to control the display of Integrated Feedback and content restricted to one or more of the defined content views.

Abstract class : bodyElement

Derived classes:
atomicBlock, atomicInline, caption, choice, col, colgroup, div, dl, dlElement, hr, interaction, itemBody, li, object, ol, printedVariable, prompt, simpleBlock, simpleInline, table, tableCell, tbody, templateElement, tfoot, thead, tr, ul

The root class of all content objects in the item content model is the bodyElement. It defines a number of attributes that are common to all elements of the content model.

Attribute : id [0..1]: identifier
The id of a body element must be unique within the item.

Attribute : class [*]: styleclass
Classes can be assigned to individual body elements. Multiple class names can be given. These class names identify the element as being a member of the listed classes. Membership of a class can be used by authoring systems to distinguish between content objects that are not differentiated by this specification. Typically, this information is used to apply different formatting based on definitions in an associated stylesheet.

Attribute : lang [0..1]: language
The main language of the element. This attribute is optional and will usually be inherited from the enclosing element.

Attribute : label [0..1]: string256
The label attribute provides authoring systems with a mechanism for labeling elements of the content model with application specific data. If an item uses labels then values for the associated toolName and toolVersion attributes must also be provided.

6.1. Basic Classes

Underpinning the content model are a number of abstract classes that are used to group elements of the body into categories that define peer-groups.

Abstract class : objectFlow

Derived classes:
flow, param
Associated classes:
object

Elements that can appear within an object.

Abstract class : inline

Derived classes:
inlineInteraction, inlineStatic
Associated classes:
simpleInline, dt, caption, atomicBlock

Elements that behave as spans of text, such as the contents of paragraphs.

Abstract class : block

Derived classes:
blockInteraction, blockStatic, customInteraction, positionObjectStage
Associated classes:
itemBody, simpleBlock

Elements that provide structure to the text, such as paragraphs, tables etc. Most elements are either inline or block elements.

Abstract class : flow (objectFlow)

Derived classes:
blockInteraction, customInteraction, flowStatic, inlineInteraction
Associated classes:
tableCell, div, dd, li

Elements that can appear inside list items, table cells, etc. which includes block-type and inline-type elements.

Abstract class : inlineStatic (inline)

Derived classes:
atomicInline, gap, hottext, math, object, printedVariable, simpleInline, templateInline, textRun
Associated classes:
hottext, prompt, templateInline

A sub-class of inline that excludes interactions.

Abstract class : blockStatic (block)

Derived classes:
atomicBlock, div, dl, hr, math, ol, simpleBlock, table, templateBlock, ul
Associated classes:
templateBlock, gapMatchInteraction, hottextInteraction

A sub-class of block that excludes interactions.

Abstract class : flowStatic (flow)

Derived classes:
atomicBlock, atomicInline, div, dl, hottext, hr, math, object, ol, printedVariable, simpleBlock, simpleInline, table, templateBlock, templateInline, textRun, ul
Associated classes:
simpleAssociableChoice, modalFeedback, simpleChoice

A sub-class of flow that excludes interactions.

The following classes define a small number of common element types used by XHTML.

Abstract class : simpleInline (bodyElement, flowStatic, inlineStatic)

Derived classes:
a, abbr, acronym, b, big, cite, code, dfn, em, feedbackInline, i, kbd, q, samp, small, span, strong, sub, sup, tt, var

Contains : inline [*]

Abstract class : simpleBlock (blockStatic, bodyElement, flowStatic)

Derived classes:
blockquote, feedbackBlock, rubricBlock

Contains : block [*]

Abstract class : atomicInline (bodyElement, flowStatic, inlineStatic)

Derived classes:
br, img

Abstract class : atomicBlock (blockStatic, bodyElement, flowStatic)

Derived classes:
address, h1, h2, h3, h4, h5, h6, p, pre

Contains : inline [*]

Class : textRun (flowStatic, inlineStatic)

A text run is simply a run of characters. Unlike all other elements in the content model it is not a sub-class of bodyElement. To assign attributes to a run of text you must use the span element instead.

6.2. XHTML Elements

The structural elements of the content model that are taken from [XHTML] are documented in groups according to their suggested classification in [XHTML_MOD]. Only those attributes listed here may be used (including attributes inherited from parent classes). By default, elements and attributes have the same interpretation and restrictions as the corresponding elements and attributes in [XHTML].

6.2.1. Text Elements

Class : abbr (simpleInline)

Note that the title attribute defined by XHTML is not supported.

Class : acronym (simpleInline)

Note that the title attribute defined by XHTML is not supported.

Class : address (atomicBlock)

Class : blockquote (simpleBlock)

Attribute : cite [0..1]: uri

Class : br (atomicInline)

Class : cite (simpleInline)

Class : code (simpleInline)

Class : dfn (simpleInline)

Class : div (blockStatic, bodyElement, flowStatic)

Contains : flow [*]

Class : em (simpleInline)

Class : h1 (atomicBlock)

Class : h2 (atomicBlock)

Class : h3 (atomicBlock)

Class : h4 (atomicBlock)

Class : h5 (atomicBlock)

Class : h6 (atomicBlock)

Class : kbd (simpleInline)

Class : p (atomicBlock)

Class : pre (atomicBlock)

Although pre inherits from atomicBlock it must not contain, either directly or indirectly, any of the following objects: img, object, big, small, sub, sup.

Class : q (simpleInline)

Attribute : cite [0..1]: uri

Class : samp (simpleInline)

Class : span (simpleInline)

Class : strong (simpleInline)

Class : var (simpleInline)

6.2.2. List Elements

Class : dl (blockStatic, bodyElement, flowStatic)

Contains : dlElement [*]

Abstract class : dlElement (bodyElement)

Derived classes:
dd, dt
Associated classes:
dl

Class : dt (dlElement)

Contains : inline [*]

Class : dd (dlElement)

Contains : flow [*]

Class : ol (blockStatic, bodyElement, flowStatic)

Contains : li [*]

Class : ul (blockStatic, bodyElement, flowStatic)

Contains : li [*]

Class : li (bodyElement)

Associated classes:
ul, ol

Contains : flow [*]

6.2.3. Object Elements

Class : object (bodyElement, flowStatic, inlineStatic)

Associated classes:
drawingInteraction, positionObjectInteraction, positionObjectStage, graphicInteraction, gapImg

Contains : objectFlow [*]

Attribute : data [1]: string
The data attribute provides a URI for locating the data associated with the object.

Attribute : type [1]: mimeType

Attribute : width [0..1]: length

Attribute : height [0..1]: length

Class : param (objectFlow)

Attribute : name [1]: string
The name of the parameter, as interpreted by the object.

Attribute : value [1]: string
The value to pass to the object for the named parameter. This value is subject to template variable expansion. If the value is the name of a template variable that was declared with the paramVariable set to true then the template variable's value is passed to the object as the value for the given parameter.

When expanding a template variable as a parameter value, types other than identifiers, strings and uris must be converted to strings. Numeric types are converted to strings using the "%i" or "%G" formats as appropriate (see printedVariable for a discussion of numeric formatting). Values of base-type boolean are expanded to one of the strings "true" or "false". Values of base-type point are expanded to two space-separated integers in the order horizontal coordinate, vertical coordinate, using "%i" format. Values of base-type pair and directedPair are converted to a string consisting of the two identifiers, space separated. Values of base-type duration are converted using "%G" format. Values of base-type file cannot be used in parameter expansion.

If the valuetype is REF the template variable must be of base-type uri.

Attribute : valuetype [1]: paramType = DATA
This specification supports the use of DATA and REF but not OBJECT.

Attribute : type [0..1]: mimeType
Used to provide a type for values valuetype REF.

Enumeration: paramType

DATA

REF

6.2.4. Presentation Elements

Class : b (simpleInline)

Class : big (simpleInline)

Class : hr (blockStatic, bodyElement, flowStatic)

Class : i (simpleInline)

Class : small (simpleInline)

Class : sub (simpleInline)

Class : sup (simpleInline)

Class : tt (simpleInline)

6.2.5. Table Elements

Class : caption (bodyElement)

Associated classes:
table

Contains : inline [*]

Class : col (bodyElement)

Associated classes:
table, colgroup

Class : colgroup (bodyElement)

Associated classes:
table

Contains : col [*]

Class : table (blockStatic, bodyElement, flowStatic)

Attribute : summary [0..1]: string

Contains : caption [0..1]

Contains : col [*]
If a table directly contains a col then it must not contain any colgroup elements.

Contains : colgroup [*]
If a table contains a colgroup it must not directly contain any col elements.

Contains : thead [0..1]

Contains : tfoot [0..1]

Contains : tbody [1..*]

Abstract class : tableCell (bodyElement)

Derived classes:
td, th
Associated classes:
tr

In XHTML, table cells are represented by either th or td and these share the following attributes and content model:

Attribute : headers [*]: identifier

Attribute : scope [0..1]: tableCellScope

Attribute : abbr [0..1]: string

Attribute : axis [0..1]: string

Attribute : rowspan [0..1]: integer

Attribute : colspan [0..1]: integer

Contains : flow [*]

Enumeration: tableCellScope

row

col

rowgroup

colgroup

Class : tbody (bodyElement)

Associated classes:
table

Contains : tr [1..*]

Class : td (tableCell)

Class : tfoot (bodyElement)

Associated classes:
table

Contains : th [1..*]

Class : th (tableCell)

Associated classes:
tfoot

Class : thead (bodyElement)

Associated classes:
table

Contains : tr [1..*]

Class : tr (bodyElement)

Associated classes:
tbody, thead

Contains : tableCell [1..*]

6.2.6. Image Element

Class : img (atomicInline)

Attribute : src [1]: uri

Attribute : alt [1]: string256

Attribute : longdesc [0..1]: uri

Attribute : height [0..1]: length

Attribute : width [0..1]: length

6.2.7. Hypertext Element

Class : a (simpleInline)

Although a inherits from simpleInline it must not contain, either directly or indirectly, another a.

Attribute : href [1]: uri

Attribute : type [0..1]: mimeType

6.3. MathML

[MathML] defines a Markup Language for describing mathematical notation using XML. The primary purpose of MathML is to provide a language for embedding mathematical expressions into other documents, in particular into HTML documents.

Class : math (blockStatic, flowStatic, inlineStatic)

The math class is defined externally by the MathML specification. It can behave in the item's content model as an inline, block or flow element.

6.3.1. Combining Template Variables and MathML

It is often desirable to vary elements of a mathematical expression when creating item templates. Although it is impossible to embed objects such as printedVariable defined for that purpose within a math object the techniques described in this section can be used to achieve a similar effect.

In MathML, numbers are represented either by the <mn> or <cn> elements, for presentation or content representation respectively. Similarly, <mi> and <ci> represent identifiers. If mathVariable is set in a template variable's declaration then all instances of <mi> and <ci> that match the name of the template variable must be replaced by <mn> and <cn> respectively with the template variable's value as their content.

It is possible that this technique of expanding template variables will be extended to other elements of MathML in future.

6.4. Variable Content

This specification defines two methods by which the content of an assessmentItem can vary depending on the state of the itemSession.

The first method is based on the value of an outcomeVariable.

Abstract class : feedbackElement

Derived classes:
feedbackBlock, feedbackInline

Attribute : outcomeIdentifier [1]: identifier
The identifier of an outcome variable that must have a base-type of identifier and be of either single or multiple cardinality. The visibility of the feedbackElement is controlled by assigning a value (or values) to this outcome variable during responseProcessing.

Attribute : showHide [1]: showHide = show
The showHide attribute determines how the visibility of the feedbackElement is controlled. If set to show then the feedback is hidden by default and shown only if the associated outcome variable matches, or contains, the value of the identifier attribute. If set to hide then the feedback is shown by default and hidden if the associated outcome variable matches, or contains, the value of the identifier attribute.

Attribute : identifier [1]: identifier
The identifier that determines the visibility of the feedback in conjunction with the showHide attribute.

A feedback element that forms part of a Non-adaptive Item must not contain an interaction object, either directly or indirectly.

When an interaction is contained in a hidden feedback element it must also be hidden. The candidate must not be able to set or update the value of the associated responseVariable.

Enumeration: showHide

show

hide

Class : feedbackBlock (feedbackElement, simpleBlock)

Class : feedbackInline (feedbackElement, simpleInline)

Class : rubricBlock (simpleBlock)

Attribute : view [