XSD Data File Information ------------------------- Author: Colin Smythe (IMS Global) Date: 31st July, 2012 Version: 2.1 Status: Final Release Description: This is the Platform Specific Model of the IMS QTI v2.1 Specification Information Model. It is this representation that is used to produce the XSD binding for IMS QTI v2.1. History: This version supercedes the full IMS QTI v1.2 and QTIv2.0 specifications. License: IPR, License and Distribution Notices This machine readable file is derived from IMS Global specification IMS Question and Test Interoperability (QTI) Version 2.1 found at http://www.imsglobal.org/question/ and the original IMS Global schema binding or code base http://www.imsglobal.org/question/. 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 the schema binding contained in this document. IMS GLC 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 Global procedures with respect to rights in IMS Global specifications can be found at the IMS Global Intellectual Property Rights web page: http://www.imsglobal.org/ipr/imsipr_policyFinal.pdf. Copyright (c) IMS Global Learning Consortium 1999-2012. All Rights Reserved. License Notice for Users Users of products or services that include this document are hereby granted a worldwide, royalty-free, non-exclusive license to use this document. Distribution Notice for Developers Developers of products or services that are not original incorporators of this document and have not changed this document, that is, are distributing a software product that incorporates this document as is from a third-party source other than IMS, are hereby granted permission to copy, display and distribute the contents of this document in any medium for any purpose without fee or royalty provided that you include this IPR, License and Distribution notice in its entirety on ALL copies, or portions thereof. Developers of products or services that are original incorporators of this document and wish to provide distribution of this document as is or with modifications and developers of products and services that are not original incorporators of this document and have changed this document, are required to register with the IMS GLC community on the IMS GLC website as described in the following two paragraphs:- * If you wish to distribute this document as is, with no modifications, you are hereby granted permission to copy, display and distribute the contents of this document in any medium for any purpose without fee or royalty provided that you include this IPR, License and Distribution notice in its entirety on ALL copies, or portions thereof, that you make and you 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. Once registered you are granted permission to transfer unlimited distribution rights of this document for the purposes of third-party or other distribution of your product or service that incorporates this document as long as this IPR, License and Distribution notice remains in place in its entirety; * If you wish to create and distribute a derived work from this document, you are hereby granted permission to copy, display and distribute the contents of the derived work in any medium for any purpose without fee or royalty provided that you include this IPR, License and Distribution notice in its entirety on ALL copies, or portions thereof, that you make and you complete a valid profile registration with IMS GLC and receive an email from IMS GLC granting the license. To register, follow the instructions on the IMS GLC website: http://www.imsglobal.org/profile/. Once registered you are granted permission to transfer unlimited distribution rights of the derived work for the purposes of third-party or other distribution of your product or service that incorporates the derived work as long as this IPR, License and Distribution notice remains in place in its entirety. The limited permissions granted above are perpetual and will not be revoked by IMS GLC 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 IMPLEMENTERS 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. Source UML File Information --------------------------- The source file information must be supplied as an XMI file (without diagram layout information). The supported UML authoring tools are: (a) Poseidon - v6 (and later) Source XSLT File Information ---------------------------- XSL Generator: UMLtoXSDTransformv1p0.xsl XSLT Processor: Xalan Release: 1.0 Date: 31st March, 2012 Autogen Engineer: Colin Smythe (IMS GLC, UK) Autogen Date: 2012-05-31 IMS GLC Auto-generation Binding Tool-kit (I-BAT) ------------------------------------------------ This file was auto-generated using the IMS GLC Binding Auto-generation Tool-kit (I-BAT). While every attempt has been made to ensure that this tool auto-generates the files correctly, users should be aware that this is an experimental tool. Permission is given to make use of this tool. IMS GLC makes no claim on the materials created by third party users of this tool. Details on how to use this tool are contained in the IMS GLC "I-BAT" Documentation available at the IMS GLC web-site. Tool Copyright: 2005-2012 (c) IMS Global Learning Consortium Inc. All Rights Reserved. Definition of Schematron Validation Rules ----------------------------------------- Author: Colin Smythe (IMS Global) Date: 31st October, 2012 Version: 1.0 Status: Final Release Description: This is the set of Schematron Rules to further enforce the QTIv2.1 Information Model. The rule sets that have been defined are: [RULE SET GENERAL 1] Ensure that certain expressions are NOT used for Response Processing. [RULE SET GENERAL 2] Ensure that the Item, Section, Test and TestPart identifiers are unique. [RULE SET GENERAL 3] Ensure that AssessmentItem Response Declarations are correct. [RULE SET INTERACTION 1] Enforce the correct use the TextEntryInteraction attributes. RULE SET GENERAL 1: Ensure that certain expressions are NOT used for Response Processing. The set of rules are: *RULE GENERAL 1a-Assertion 3 :- The expression numberPresented must NOT be used in Response Processing. *RULE GENERAL 1a-Assertion 4 :- The expression numberResponded must NOT be used in Response Processing. *RULE GENERAL 1a-Assertion 5 :- The expression numberSelected must NOT be used in Response Processing. *RULE GENERAL 1a-Assertion 1 :- The expression numberCorrect must NOT be used in Response Processing. *RULE GENERAL 1a-Assertion 2 :- The expression numberIncorrect must NOT be used in Response Processing. *RULE GENERAL 1a-Assertion 6 :- The expression outcomeMinimum must NOT be used in Response Processing. *RULE GENERAL 1a-Assertion 7 :- The expression outcomeMaximum must NOT be used in Response Processing. *RULE GENERAL 1a-Assertion 8 :- The expression testVariables must NOT be used in Response Processing. RULE SET GENERAL 2: Ensure that the Item, Section, Test and TestPart identifiers are unique. The set of rules are: *RULE GENERAL 2a-Assertion 1 :- The AssessmentTest and a TestPart must not have the same unique identifier. *RULE GENERAL 2a-Assertion 2 :- The AssessmentTest and an AssessmentSection must not have the same unique identifier. *RULE GENERAL 2a-Assertion 3 :- The AssessmentTest and a direct child AssessmentSectionRef must not have the same unique identifier. *RULE GENERAL 2a-Assertion 4 :- The AssessmentTest and a descendant AssessmentSectionRef must not have the same unique identifier. *RULE GENERAL 2a-Assertion 5 :- The AssessmentTest and a descendant AssessmentItemRef must not have the same unique identifier. *RULE GENERAL 2b-Assertion 2 :- The TestPart and an AssessmentSection must not have the same unique identifier. *RULE GENERAL 2b-Assertion 3 :- The TestPart and a direct child AssessmentSectionRef must not have the same unique identifier. *RULE GENERAL 2b-Assertion 4 :- The TestPart and a descendant AssessmentSectionRef must not have the same unique identifier. *RULE GENERAL 2b-Assertion 5 :- The TestPart and a descendant AssessmentItemRef must not have the same unique identifier. *RULE GENERAL 2b-Assertion 1 :- Two TestParts must not have the same unique identifier. *RULE GENERAL 2c-Assertion 2 :- The AssessmentSection and a descendant AssessmentSection must not have the same unique identifier. *RULE GENERAL 2c-Assertion 3 :- The AssessmentSection and a descendant AssessmentSectionRef must not have the same unique identifier. *RULE GENERAL 2c-Assertion 4 :- The AssessmentSection and a descendant AssessmentItemRef must not have the same unique identifier. *RULE GENERAL 2c-Assertion 1 :- Two AssessmentSection children of a TestPart must not have the same unique identifier. RULE SET GENERAL 3: Ensure that AssessmentItem Response Declarations are correct. The set of rules are: RULE SET INTERACTION 1: Enforce the correct use the TextEntryInteraction attributes. The set of rules are: *RULE INTERACTION 1a-Assertion 1 :- The StringIdentifier and ResponseIdentifier attribute values must not be the same. History: Version 1.0: The first set of schematron rules for the IMS Global QTIv2.1 specification. Schematron Validation Rules for QTI Specification v2.1. Ensure that certain expressions are NOT used for Response Processing. [RULE GENERAL 1a:Assertion 3] The expression numberPresented must NOT be used in Response Processing. [RULE GENERAL 1a:Assertion 4] The expression numberResponded must NOT be used in Response Processing. [RULE GENERAL 1a:Assertion 5] The expression numberSelected must NOT be used in Response Processing. [RULE GENERAL 1a:Assertion 1] The expression numberCorrect must NOT be used in Response Processing. [RULE GENERAL 1a:Assertion 2] The expression numberIncorrect must NOT be used in Response Processing. [RULE GENERAL 1a:Assertion 6] The expression outcomeMinimum must NOT be used in Response Processing. [RULE GENERAL 1a:Assertion 7] The expression outcomeMaximum must NOT be used in Response Processing. [RULE GENERAL 1a:Assertion 8] The expression testVariables must NOT be used in Response Processing. Ensure that the Item, Section, Test and TestPart identifiers are unique. [RULE GENERAL 2a:Assertion 1] The AssessmentTest and a TestPart must not have the same unique identifier. [RULE GENERAL 2a:Assertion 2] The AssessmentTest and an AssessmentSection must not have the same unique identifier. [RULE GENERAL 2a:Assertion 3] The AssessmentTest and a direct child AssessmentSectionRef must not have the same unique identifier. [RULE GENERAL 2a:Assertion 4] The AssessmentTest and a descendant AssessmentSectionRef must not have the same unique identifier. [RULE GENERAL 2a:Assertion 5] The AssessmentTest and a descendant AssessmentItemRef must not have the same unique identifier. [RULE GENERAL 2b:Assertion 2] The TestPart and an AssessmentSection must not have the same unique identifier. [RULE GENERAL 2b:Assertion 3] The TestPart and a direct child AssessmentSectionRef must not have the same unique identifier. [RULE GENERAL 2b:Assertion 4] The TestPart and a descendant AssessmentSectionRef must not have the same unique identifier. [RULE GENERAL 2b:Assertion 5] The TestPart and a descendant AssessmentItemRef must not have the same unique identifier. [RULE GENERAL 2b:Assertion 1] Two TestParts must not have the same unique identifier. [RULE GENERAL 2c:Assertion 2] The AssessmentSection and a descendant AssessmentSection must not have the same unique identifier. [RULE GENERAL 2c:Assertion 3] The AssessmentSection and a descendant AssessmentSectionRef must not have the same unique identifier. [RULE GENERAL 2c:Assertion 4] The AssessmentSection and a descendant AssessmentItemRef must not have the same unique identifier. [RULE GENERAL 2c:Assertion 1] Two AssessmentSection children of a TestPart must not have the same unique identifier. Ensure that AssessmentItem Response Declarations are correct. Enforce the correct use the TextEntryInteraction attributes. [RULE INTERACTION 1a:Assertion 1] The StringIdentifier and ResponseIdentifier attribute values must not be the same. Any namespaced element from any namespace may be included within an "any" element. The namespace for the imported element must be defined in the instance, and the schema must be imported. The extension has a definition of "lax" i.e. they can reuse elements from the target namespace. The 'A' complexType is the container for content that is equivalent to the HTML 'a' markup. The anyN operator takes one or more sub-expressions each with a base-type of boolean and single cardinality. The result is a single boolean which is true if at least min of the sub-expressions are true and at most max of the sub-expressions are true. If more than n - min sub-expressions are false (where n is the total number of sub-expressions) or more than max sub-expressions are true then the result is false. If one or more sub-expressions are NULL then it is possible that neither of these conditions is satisfied, in which case the operator results in NULL. For example, if min is 3 and max is 4 and the sub-expressions have values {true,true,false,NULL} then the operator results in NULL whereas {true,false,false,NULL} results in false and {true,true,true,NULL} results in true. The result NULL indicates that the correct value for the operator cannot be determined. The AreaMapping complexType is the container for information about for mapping data points in areas. 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). An Assessment consists of one or more Items. An 'assessmentItem' is the binding form of an Item. An Item is the smallest exchangeable assessment object. An Item is more than a 'Question' in that it contains the question and instructions to be presented, the response processing to be applied to the candidates response(s) and then feedback that may be presented (including hints and solutions). This is the container for referential link to the externally stored AssessmentItem (each such Item is stored in its own XML instance file). The identifier attribute should be used to identify the actual Item. The details for the Item provided at this point enable the associated Test/Section to determine if the Item fulfills any prerequisites. A Test consists of one or more Sections. An 'assessmentSection' is the binding form of a Section. More significantly, a Section is an aggregation of assessmentItems i.e. a set of Items that are used to achieve some co-ordnated assessment activity. An assessmentSection contains the rules that should be used to select and order the set of associated Sections and/or Items. Furthermore, the associated rubricBlock is used to present content that is relevant to all of the contained Sections and/or Items. This is the container for the information about a Test. An 'assessmentTest' is the binding form of a Test. Each Test is composed of one or more TestParts (with each part consisting of at least one Section). Outcomes processing and feedback at the test level may be available. The AssociateInteraction complexType is the container for information about associate interactions. An associate interaction is a blockInteraction that presents candidates with a number of choices and allows them to create associations between them. The associateInteraction must be bound to a response variable with base-type pair and either single or multiple cardinality. The 'BlockQuote' complexType is the container for content that is equivalent to the HTML 'blockquote' markup. A branch-rule is a simple expression attached to an assessmentItemRef, assessmentSection or testPart that is evaluated after the item, section or part has been presented to the candidate. If the expression evaluates to true the test jumps forward to the item, section or part referred to by the target identifier. In the case of an item or section, the target must refer to an item or section in the same testPart that has not yet been presented. For testParts, the target must refer to another testPart. The 'Caption' complexType is the container for content that is equivalent to the HTML 'caption' markup. The ChoiceInteraction is the complexType for the information in a choice interaction. The choice interaction presents a set of choices to the candidate. The candidate's task is to select one or more of the choices, up to a maximum of maxChoices. There is no corresponding minimum number of choices. The interaction is always initialized with no choices selected. The 'ColGroup' complexType is the container for set of columns defined within a table. The content is the set of 'col' HTML markup. The CorrectResponse complexType is the container for information about the correct response for an interaction. 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 hwich 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's own responses (which may be hidden completely if necessary). The CustomInteraction complexType is the container for undefined QTI interactions i.e. ones of a proprietary nature. These are supported using a lax namespacing approach but developers are encouraged to define and use an associated validation XSD. The custom operator provides a namespaced extension mechanism for defining operations not currently supported by this specification. The 'DD' complexType is the container for term definitions as per the HTML 'dd' markup. This is the container for the permitted set of default values. A human readable interpretation of the default value is also supplied using the 'interpretation' attribute. The 'Div' complexType is the container for content that is equivalent to the HTML 'div' markup. The 'DL' complexType is the container for list definitions as per the HTML 'dl' markup. This can contain any combination of 'dd' and 'dt' HTML elements. DrawingInteraction is the complexType for graphic gap match QTI interactions. The drawing interaction allows the candidate to use a common set of drawing tools to modify a given graphical image (the canvas). It must be bound to a response variable with base-type file and single cardinality. The result is a file in the same format as the original image. The 'DT' complexType is the container for term definitions as per the HTML 'dt' markup. The equal operator takes two sub-expressions which must both have single cardinality and have a numerical base-type. The result is a single boolean with a value of true if the two expressions are numerically equal and false if they are not. If either sub-expression is NULL then the operator results in NULL. The equalRounded operator takes two sub-expressions which must both have single cardinality and have a numerical base-type. The result is a single boolean with a value of true if the two expressions are numerically equal after rounding and false if they are not. If either sub-expression is NULL then the operator results in NULL. The ExtendedTextInteraction complexType is the container for information about an extendedText interaction. An extended text interaction is a blockInteraction that allows the candidate to enter an extended amount of text. The extendedTextInteraction must be bound to a response variable with baseType of string, integer or float. When bound to response variable with single cardinality a single string of text is required from the candidate. When bound to a response variable with multiple or ordered cardinality several separate text strings may be required, see maxStrings below. The TemplateBlockFeedbackBlock complexType is the container for block-based feedback used within a templateBlock. The FeedbackInline complexType is the container for the feedback to be presented to the candidate inline to other content. The field-value operator takes a sub-expression with a record container value. The result is the value of the field with the specified fieldIdentifier. If there is no field with that identifier then the result of the operator is NULL. The GapImg complexType is the container for an image assigned to a gap-based interaction. A gap image contains a single image object to be inserted into a gap by the candidate. The GapMatchInteraction complexType is the container for the information about a gap match interaction. A gap match interaction is a block interaction that contains a number gaps that the candidate can fill from an associated set of choices. The candidate must be able to review the content with the gaps filled in context, as indicated by their choices. The gapMatchInteraction must be bound to a response variable with base-type directedPair and either single or multiple cardinality, depending on the number of gaps. The choices represent the source of the pairing and gaps the targets. Each gap can have at most one choice associated with it. The maximum occurrence of the choices is controlled by the matchMax attribute of gapChoice. The GapText complexType is the container for text assigned to a gap-based interaction. A simple run of text to be inserted into a gap by the user, may be subject to variable value substitution with printedVariable. GraphicAssociateInteraction is the complexType for graphic associate QTI interactions. A graphic associate interaction is a graphic interaction with a corresponding set of choices that are defined as areas of the graphic image. The candidate's task is to associate the areas (hotspots) with each other. The graphic associate interaction should only be used when the graphical relationship of the choices with respect to each other (as represented by the graphic image) is important to the needs of the item. GraphicGapMatchInteraction is the complexType for graphic gap match QTI interactions. A graphic gap-match interaction is a graphical interaction with a set of gaps that are defined as areas (hotspots) of the graphic image and an additional set of gap choices that are defined outside the image. The candidate must associate the gap choices with the gaps in the image and be able to review the image with the gaps filled in context, as indicated by their choices. GraphicOrderInteraction is the complexType for graphic order QTI interactions. A graphic order interaction is a graphic interaction with a corresponding set of choices that are defined as areas of the graphic image. The candidate's task is to impose an ordering on the areas (hotspots). The order hotspot interaction should only be used when the spacial relationship of the choices with respect to each other (as represented by the graphic image) is important to the needs of the item. The HotspotInteraction complexType is the container for infromation on hotspot interactions. A hotspot interaction is a graphical interaction with a corresponding set of choices that are defined as areas of the graphic image. The candidate's task is to select one or more of the areas (hotspots). The hotspot interaction should only be used when the spacial relationship of the choices with respect to each other (as represented by the graphic image) is important to the needs of the item. Otherwise, choiceInteraction should be used instead with separate material for each option.The delivery engine must clearly indicate the selected area(s) of the image and may also indicate the unselected areas as well. Interactions with hidden hotspots are achieved with the selectPointInteraction. The HotText complexType is the container for HotText information. A hottext area is used within the content of an hottextInteraction to provide the individual choices. It must not contain any nested interactions or other hottext areas. When a hottext choice is hidden (by the value of an associated template variable) the content of the choice must still be presented to the candidate as if it were simply part of the surrounding material. In the case of hottext, the effect of hiding the choice is simply to make the run of text unselectable by the candidate. The HotTextInteraction complexType is the container for information about a hotText interaction. The hottext interaction presents a set of choices to the candidate represented as selectable runs of text embedded within a surrounding context, such as a simple passage of text. Like choiceInteraction, the candidate's task is to select one or more of the choices, up to a maximum of maxChoices. The interaction is initialized from the defaultValue of the associated response variable, a NULL value indicating that no choices are selected (the usual case). The hottextInteraction must be bound to a response variable with a baseType of identifier and single or multiple cardinality. The complexType for the set of HTML text elements i.e. h1, h2, h3, h4, h5, h6, p, pre and address. The index operator takes a sub-expression with an ordered container value and any base-type. The result is the nth value of the container. The result has the same base-type as the sub-expression but single cardinality. The first value of a container has index 1, the second 2 and so on. n must be a positive integer. If n exceeds the number of values in the container (or the sub-expression is NULL) then the result of the index operator is NULL. If n is an identifier, it is the value of n at runtime that is used. The 'InfoControl' complexType is the container to provide the candidate with extra information about the item when s/he chooses to trigger the control. The extra information can be a hint, but could also be additional tools such as a ruler or a (javaScript) calculator. An InlineChoice complexType is the container for a simple run of text to be displayed to the user, and which may be subject to variable value substitution with printedVariable(s). The InlineChoiceInteraction complexType is the container for information about an inline choice interaction. An inline choice is an inlineInteraction that presents the user with a set of choices, each of which is a simple piece of text. The candidate's task is to select one of the choices. Unlike the choiceInteraction, the delivery engine must allow the candidate to review their choice within the context of the surrounding text. The inside operator takes a single sub-expression which must have a baseType of point. The result is a single boolean with a value of true if the given point is inside the area defined by shape and coords. If the sub-expression is a container the result is true if any of the points are inside the area. If either sub-expression is NULL then the operator results in NULL. The InterpolationTable complexType is the container for interpolation information. An interpolationTable transforms a source float (or integer) by finding the first interpolationTableEntry with a sourceValue that is less than or equal to (subject to includeBoundary) the source value. For example, an interpolation table can be used to map a raw numeric score onto an identifier representing a grade. It may also be used to implement numeric transformations such as those from a simple raw score to a value on a calibrated scale. This is the container for the set of materials that are to be rendered as the question itself. The content model is XHTML-based and combines with it the range of QTI interactions (an interaction defines the nature of the question e.g. multple choice, hotspot, etc.). The rubric material can be interleaved with the block content. The 'LI' complexType is the container for the definition of lists as per the HTML 'li' markup. Provides the ability to use a multi variable operator e.g. an 'and' of the set of variables. Provides the ability to use a multi variable operator e.g. an 'and' of the set of variables. Provides the ability to use a two variable operator e.g. greater than. Provides the ability to use a single variable operator e.g. a 'not'. The LookupOutcomeValue complexType is the container for look-up mapping values to outcome variables. The lookupOutcomeValue rule sets the value of an outcome variable to the value obtained by looking up the value of the associated expression in the lookupTable associated with the outcome's declaration. A special class used to create a mapping from a source set of any baseType (except file and duration) to a single float. Note that mappings from values of base type float should be avoided due to the difficulty of matching floating point values, see the match operator for more details. When mapping containers the result is the sum of the mapped values from the target set. See mapResponse for details. The MatchInteraction complexType is the container for information about a match interaction. A match interaction is a blockInteraction that presents candidates with two sets of choices and allows them to create associates between pairs of choices in the two sets, but not between pairs of choices in the same set. Further restrictions can still be placed on the allowable associations using the matchMax and matchGroup attributes of the choices. The matchInteraction must be bound to a response variable with base-type directedPair and either single or multiple cardinality. The MatchTable complexType is the container source mapping. A matchTable transforms a source integer by finding the first matchTableEntry with an exact match to the source. The mathOperator operator takes 1 or more sub-expressions which all have single cardinality and have numerical base-types. The trigonometric functions, sin, cos and tan, take one argument in radians, which evaluates to a single float. Other functions take one numerical argument. Further functions might take more than one numerical argument, e.g. atan2 (two argument arc tan). The result is a single float, except for the functions signum, floor and ceil, which return a single integer. If any of the sub-expressions is NULL, the result is NULL. If any of the sub-expressions falls outside the natural domain of the function called by mathOperator, e.g. log(0) or asin(2), then the result is NULL. The MediaInteraction complexType is the container for the media interaction information. The media interaction allows more control over the way the candidate interacts with a time-based media object and allows the number of times the media object was experienced to be reported in the value of the associated response variable, which must be of base-type integer and single cardinality. The ModalFeedback complexType is the container for the item feedback to be presented to the candidate. Modal feedback is shown to the candidate directly following response processing. The value of an outcome variable is used in conjunction with the showHide and identifier attributes to determine whether or not the feedback is shown. Provides the ability to use a multi variable numeric-based operator e.g. a 'sum' of the set of variables. The Object complexType is the container for the objects used with the associated content i.e. positionObjectStage, graphicInteraction, positionObjectInteraction, mediaInteraction, drawingInteraction and gapImg. This is the container for the ordering rules to be applied when determining the order in which the selected AssessmentSections and AssessmentItems are to be presented. At present this is an open, namespaced, extension point. Feedback on what proprietary features are used is welcomed. The OrderInteraction complexType is the container for the information about an order interaction.In an order interaction the candidate's task is to reorder the choices, the order in which the choices are displayed initially is significant. By default the candidate's task is to order all of the choices but a subset of the choices can be requested using the maxChoices and minChoices attributes. When specified, the candidate must select a subset of the choices and impose an ordering on them. The 'OUL' complexType is the container for ordered and unordered lists as per the HTML 'ul' and 'ol' markup. The OutcomeCondition complexType is the container for the sequence of outcome conditions to be applied. The condition is structured as an 'If..ElseIf..ElseIf..Else' sequence. Each clause as its own outcome rule construct. The OutcomeDeclaration complexType is the container for the declaration of outcome variables. Outcome variables are declared by outcome declarations. Their value is set either from s default given in the declaration itself or by a 'responseRule' during 'responseProcessing'. The OutcomeElse complexType is the container for 'Else' processing. An outcomeElse part consists of an expression which must have an effective baseType of boolean and single cardinality. For more information about the runtime data model employed see Expressions. It also contains a set of sub-rules. If the expression is true then the sub-rules are processed. The OutcomeIf complexType is the container for 'If' processing. An outcomeIf part consists of an expression which must have an effective baseType of boolean and single cardinality. For more information about the runtime data model employed see Expressions. It also contains a set of sub-rules. If the expression is true then the sub-rules are processed, otherwise they are skipped (including if the expression is NULL) and the following outcomeElseIf or outcomeElse parts (if any) are considered instead. The OutcomeProcessing complexType is the container for the outcome processing instructions. Outcome processing takes place each time the candidate submits the responses for an item (when in individual submission mode) or a group of items (when in simultaneous submission mode). It happens after any (item level) response processing triggered by the submission. The values of the test's outcome variables are always reset to their defaults prior to carrying out the instructions described by the outcomeRules. Because outcome processing happend each time the candidate submits responses the resulting values of the test-level outcomes may be used to activate test-level feedback during the test or to control the behaviour of subsequent parts through the use of preConditions and branchRules. The OutcomeProcessingFragment is the complexType for a group of outcome rules. An outcomeProcessingFragment is a simple group of outcomeRules which are grouped together in order to allow them to be managed as a separate resource. It should not be used for any other purpose. The patternMatch operator takes a sub-expression which must have single cardinality and a base-type of string. The result is a single boolean with a value of true if the sub-expression matches the regular expression given by pattern and false if it doesn't. If the sub-expression is NULL then the operator results in NULL. The PositionObjectInteraction is the complexType for position object interactions. The position object interaction consists of a single image which must be positioned on another graphic image (the stage) by the candidate. Like selectPointInteraction, the associated response may have an areaMapping that scores the response on the basis of comparing it against predefined areas but the delivery engine must not indicate these areas of the stage. Only the actual position(s) selected by the candidate shall be indicated. The PositionObjectStage is the complexType container for the image to be used as a stage onto which individual 'positionObjectInteractions' allow the candidate to place their objects. A Prompt complexType is the container for the material that is to be presented to a candidate as the prompt for the question e.g. the actual question after which the set of possible answers for a multiple choice are presented. CHANGED: To contain FlowStaticGroup instead of InlineStaticGroup. The 'Q' complexType is the container for content that is equivalent to the HTML 'q' markup. The repeat operator allows the filling of an ordered container. The result of a repeat operator is an ordered set of values calculated from the expressions. Values will be set in the associated container by a setTemplateValue expression. Each expression is calculated as many times as it is queried by numberRepeats. The ResponseCondition complexType is the container for the sequence of outcome conditions to be applied. The condition is structured as an 'If..ElseIf..ElseIf..Else' sequence. Each clause as its own response rule construct. The ResponseDeclaration complexType is used to contain the definition of the Response Variable that are to be bound to the interactions in the Item. The ResponseElse complexType is the container for the 'Else' clause. If the expression given in a responseIf or responseElseIf evaluates to true then the sub-rules contained within it are followed and any following responseElseIf or responseElse parts are ignored for this response condition. If the expression given in a responseIf or responseElseIf does not evaluate to true then consideration passes to the next responseElseIf or, if there are no more responseElseIf parts then the sub-rules of the responseElse are followed (if specified). The ResponseIf complexType is the container for the 'If' clause. If the expression given in a responseIf or responseElseIf evaluates to true then the sub-rules contained within it are followed and any following responseElseIf or responseElse parts are ignored for this response condition. If the expression given in a responseIf or responseElseIf does not evaluate to true then consideration passes to the next responseElseIf or, if there are no more responseElseIf parts then the sub-rules of the responseElse are followed (if specified). The ResponseProcessing complexType is the container for response processing instructions. Response processing involves the application of a set of responseRules, including the testing of responseConditions and the evaluation of expressions involving the item variables. For delivery engines that are only designed to support very simple use cases the implementation of a system for carrying out this evaluation, conditional testing and processing may pose a barrier to the adoption of the specification. The ResponseProcessingFragment complexType is the container for a group of response rules. A responseProcessingFragment is a simple group of responseRules which are grouped together in order to allow them to be managed as a separate resource. It should not be used for any other purpose. The roundTo operator takes one sub-expression which must have single cardinality and a numerical base-type. The result is a single float with the value nearest to that of the expression's value such that when converted to a decimal string it represents the expression rounded by the specified rounding method to the specified precision. If the sub-expression is NULL, then the result is NULL. If the sub-expression is INF, then the result is INF. If the sub-expression is -INF, then the result is -INF. If the argument is NaN, then the result is NULL. When rounding to n significant figures, the deciding digit is the (n+1)th digit counting from the first non-zero digit from the left in the number. If the deciding digit is 5 or greater, the nth digit is increased by 1 and all digits to its right are discarded; if the deciding digit is less than 5, all digits to the right of the nth digit are discarded. When rounding to n decimal places, the deciding digit is the (n+1)th digit counting to the right from the decimal point. If the deciding digit is 5 or greater, the nth digit is increased by 1 and all digits to its right are discarded; if the deciding digit is less than 5, all digits to the right of the nth digit are discarded. A rubric block identifies instructions to one or more of the actors that view the item or set of items (as per a section). Although rubric blocks are defined as simpleBlocks they must not contain interactions. The visibility of nested bodyElements or rubricBlocks is determined by the outermost element. In other words, if an element is determined to be hidden then all of its content is hidden including conditionally visible elements for which the conditions are satisfied and that therefore would otherwise be visible. A rubricBlock template block identifies content to be used in a template within a rubricBlock. The visibility of nested bodyElements or templateBlocks is determined by the outermost element. In other words, if an element is determined to be hidden then all of its content is hidden including conditionally visible elements for which the conditions are satisfied and that therefore would otherwise be visible. The RubricBlockTemplateInline complexType is the container for inline objects (excluding interactions) that are used to create a template layout within a rubricBlock. This is the container for the selection rules to be applied when selecting the enclosed AssessmentSections and AssessmentItems. At present this is an open, namespaced, extension point. Feedback on what proprietary features are used is welcomed. SelectPointInteraction is the complexType for select point QTI interactions. Like hotspotInteraction, a select point interaction is a graphic interaction. The candidate's task is to select one or more points. The associated response may have an areaMapping that scores the response on the basis of comparing it against predefined areas but the delivery engine must not indicate these areas of the image. Only the actual point(s) selected by the candidate shall be indicated. The SetValue complexType is the container for the value set for the associated element (the element is identified using the 'identifier' attribute). The SimpleAssociableChoice complexType is the container for the ordered set of choices for the match set. The SimpleChoice complexType is the container for the information that is to be presented to a candidate as a possible answer to be selected i.e. in a multiple choice, true/false types of questions. The SimpleMatchSet complexType is the container for the match set chocies. There are two sets of choices: the first set defines the source choices and the second set the targets. The SliderInteraction complexType is the container for the information abourt a slider nteraction. The slider interaction presents the candidate with a control for selecting a numerical value between a lower and upper bound. It must be bound to a response variable with single cardinality with a base-type of either integer or float. The statsOperator operator takes 1 sub-expression which is a container of multiple or ordered cardinality and has a numerical base-type. The result is a single float. If the sub-expression or any value contained therein is NULL, the result is NULL. If any value contained in the sub-expression is not a numerical value, then the result is NULL. The stringMatch operator takes two sub-expressions which must have single and a base-type of string. The result is a single boolean with a value of true if the two strings match according to the comparison rules defined by the attributes below and false if they don't. If either sub-expression is NULL then the operator results in NULL. The substring operator takes two sub-expressions which must both have an effective base-type of string and single cardinality. The result is a single boolean with a value of true if the first expression is a substring of the second expression and false if it isn't. If either sub-expression is NULL then the result of the operator is NULL. The 'Table' complexType is the container for content that is equivalent to the HTML 'table' markup. The TablePart complexType is the container for set of table row content that is used to the support content within a table. The 'TDH' complexType is the container for content that is equivalent to the HTML 'td' and 'th' markup within a table. A template block identifies content to be used in a template. The visibility of nested bodyElements or templateBlocks is determined by the outermost element. In other words, if an element is determined to be hidden then all of its content is hidden including conditionally visible elements for which the conditions are satisfied and that therefore would otherwise be visible. The TemplateBlockFeedbackBlock complexType is the container for block-based feedback used within a templateBlock. The TemplateCondition complexType is the container for the definition of the 'If..Then..Else/ElseIf' rule construction. If the expression given in the templateIf or templateElseIf evaluates to true then the sub-rules contained within it are followed and any following templateElseIf or templateElse parts are ignored for this template condition. If the expression given in the templateIf or templateElseIf does not evaluate to true then consideration passes to the next templateElseIf or, if there are no more templateElseIf parts then the sub-rules of the templateElse are followed (if specified). The TemplateConstraint complexType is the container for the constraints to be applied to a templateRule. A templateConstraint determines constraints on the binding of variables in the contained expression. The expression must have an effective baseType of boolean and single cardinality. At the runtime the template variables must be instantiated according to these constraints. Implementors need to be aware that some configurations of templateConstraint can cause an infinite loop. For that reason, the minimum supported maximum number of templateConstraint iterations is 100. The templateDeclaration complexType is the container for template declarations. Template declarations declare item variables that are to be used specifically for the purposes of cloning items. They can have their value set only during templateProcessing. They are referred to within the itemBody in order to individualize the clone and possibily also within the responseProcessing rules if the cloning process affects the way the item is scored. The information in a TemplateDefault complexType is used to alter the default value of a template variable declared by the item based on an expression evaluated at test-level. The default value of a template variable in an item can be overridden based on the test context in which the template is instantiated. The value is obtained by evaluating an expression defined within the reference to the item at test level and which may therefore depend on the values of variables taken from other items in the test or from outcomes defined at test level itself. The TemplateElse complexType is the container for the alternative rules that are to be applied if the templateIf rules are NULL/FALSE. The TemplateIf complexType is the container of an expression which must have an effective baseType of boolean and single cardinality. For more information about the runtime data model employed see 'Expressions'. It also contains a set of sub-rules. If the expression is true then the sub-rules are processed, otherwise they are skipped (including if the expression is NULL) and the following templateElseIf or templateElse parts (if any) are considered instead. The TemplateInline complexType is the container for inline objects (excluding interactions) that are used to create a template layout. The TemplateProcessing complexType is the container for the template processing rules. Template processing consists of one or more templateRules that are followed by the cloning engine or delivery system in order to assign values to the template variables. Template processing is identical in form to responseProcessing except that the purpose is to assign values to template variables, not outcome variables. The TestFeedback complexType is the container for the test feedback to be presented to the candidate. Test feedback is shown to the candidate either directly following outcome processing (during the test) or at the end of the testPart or assessmentTest as appropriate (referred to as atEnd). The value of an outcome variable is used in conjunction with the showHide and identifier attributes to determine whether or not the feedback is actually shown. A Test is composed of one or more Test Parts. Each Test Part is used to control the presentation of a part of the Test - this allows a Test to be undertaken in several related but separated stages. A TestPart conatins one or more assessmentSections (either included or through external reference). The 'TR' complexType is the container for content that is equivalent to the HTML 'tr' markup. The UploadInteraction complexType is the container for QTI interactions that involve submission of information in an external file. The upload interaction allows the candidate to upload a pre-prepared file representing their response. The AreaMapEntry complexType is the container for area map entries. A 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. This is the container for referential link to an externally stored AssessmentSection (each such Section is stored in its own XML instance file). The identifier attribute should be used to identify the actual Section. The AssociableHotspot complexType is the container for association of associableChoice, and hotspot interactions. This ComplexType is intentionally empty. The simplest expression returns a single value from the set defined by the given baseType. The 'BR' complexType is the container for content that is equivalent to the HTML 'br' markup.This ComplexType is intentionally empty. The 'Col' complexType is the container for content that is equivalent to the HTML 'col' markup.This ComplexType is intentionally empty. This expression looks up the declaration of a response variable and returns the associated correctResponse or NULL if no correct value was declared. When used in outcomes processing item identifier prefixing (see variable) may be used to obtain the correct response from an individual item. This is intentionally empty. This expression looks up the declaration of an itemVariable and returns the associated defaultValue or NULL if no default value was declared. When used in outcomes processing item identifier prefixing (see variable) may be used to obtain the default value from an individual item. This is intentionally empty. The EndAttemptInteraction complexType is the container for the end attempt interaction information. The end attempt interaction is a special type of interaction which allows item authors to provide the candidate with control over the way in which the candidate terminates an attempt. The candidate can use the interaction to terminate the attempt (triggering response processing) immediately, typically to request a hint. It must be bound to a response variable with base-type boolean and single cardinality. The Gap complexType is the container for the inline content as part of a gap-based interaction. The gap is an inline static element that must only appear within a gapMatchInteraction. The HotspotChoice complexType is the container for data about hotspot choices (this ComplexType is intentionally empty). The hotspots that define the choices that can be selected by the candidate. If the delivery system does not support pointer-based selection then the order in which the choices are given must be the order in which they are offered to the candidate for selection. For example, the 'tab order' in simple keyboard navigation. If hotspots overlap then those listed first hide overlapping hotspots that appear later. The default hotspot, if defined, must appear last. The 'HR' complexType is the container for content that is equivalent to the HTML 'hr' markup.This complexType is intentionally empty. The 'Img' complexType is the container for content that is equivalent to the HTML 'img' markup.This ComplexType is intentionally empty. The InterpolationTableEntry complexType is the container for an entry in the corresponding interpolationTable. This complexType is intentionally empty. When items are referenced as part of a test, the test may impose constraints on how many attempts, and which states are allowed. These constraints can be specified for individual items, for whole sections or for an entire testPart. By default, a setting at testPart level affects all items in that part unless the setting is overridden at the assessmentSection level or ultimately at the individual assessmentItemRef. The defaults given below are used only in the absence of any applicable constraint. This complexType is intentionally empty. The map is defined by a set of mapEntries, each of which maps a single value from the source set onto a single float. This expression looks up the value of a response variable and then transforms it using the associated mapping, which must have been declared. The result is a single float. If the response variable has single cardinality then the value returned is simply the mapped target value from the map. If the response variable has multiple or ordered cardinality then the value returned is the sum of the mapped target values. This expression cannot be applied to variables of record cardinality. This is intentionally empty. The MatchTableEnry complexType is the container for an entry n a match table. Intentionally empty comlexType. The result is a mathematical constant returned as a single float, e.g. pi and e. Provides an operator that returns the number of values that confrm to the associated constraints e.g. 'numberCorrect'. This expression, which can only be used in outcomes processing, simultaneously looks up the normal Maximum/Minimum value of an outcome variable in a sub-set of the items referred to in a test. Only variables with single cardinality are considered. If any of the items within the given subset have no declared maximum the result is NULL, otherwise the result has cardinality multiple and base-type float. This is intentionally empty. The Param complexType is the container for the parameter information to be used for the associated object. AN Object can have zero or more parameters. The PrintedVariable complexType is the container for variables that are to be printed. The outcome variable or template variable must have been defined and have single cardinality. The values of response variables cannot be printed directly as their values are implicitly known to the candidate through the interactions they are bound to; if necessary, their values can be assigned to outcomes during responseProcessing and displayed to the candidate as part of a bodyElement visible only in the appropriate feedback states. Selects a random float from the specified range [min,max]. This is intentionally empty. Selects a random integer from the specified range [min,max] satisfying min + step * n for some integer n. For example, with min=2, max=11 and step=3 the values {2,5,8,11} are possible. This is used to associate an external stylesheet (it is assumed that this takes the form of a CSS file but other formats are permitted). This expression, which can only be used in outcomes processing, simultaneously looks up the value of an itemVariable in a sub-set of the items referred to in a test. Only variables with single cardinality are considered, all NULL values are ignored. The result has cardinality multiple and base-type as specified below. This is intentionally empty. The TestEntryInteraction complexType is the container for information about a textEntry interaction. A textEntry interaction is an inlineInteraction that obtains a simple piece of text from the candidate. Like inlineChoiceInteraction, the delivery engine must allow the candidate to review their choice within the context of the surrounding text. The textEntryInteraction must be bound to a response variable with single cardinality only. The baseType must be one of string, integer or float. This complexType is intentionally empty. In the context of a specific assessmentTest an item, or group of items, may be subject to a time constraint. The QTI specification supports both minimum and maximum time constraints. The controlled time for a single item is simply the duration of the item session as defined by the builtin response variable duration. For assessmentSections, testParts and whole assessmentTests the time limits relate to the durations of all the item sessions plus any other time spent navigating that part of the test. In other words, the time includes time spent in states where no item is being interacted with, such as dedicated navigation screens. This complexType is intentionally empty. A class that can represent a single value of any baseType in variable declarations and result reports. The base-type is defined by the baseType attribute of the declaration except in the case of variables with record cardinality. This expression looks up the value of an itemVariable that has been declared in a corresponding variableDeclaration or is one of the built-in variables. The result has the base-type and cardinality declared for the variable subject to the type promotion of weighted outcomes. This is intentionally empty. The VariableMapping complexType is the contains the variable mappings that allow outcome variables declared with the name sourceIdentifier in the corresponding item to be treated as if they were declared with the name targetIdentifier during outcomeProcessing. Use of variable mappings allows more control over the way outcomes are aggregated when using testVariables. The Weight complexType stores the weighting information. The contribution of an individual item score to an overall test score typically varies from test to test. The score of the item is said to be weighted. Weights are defined as part of each reference to an item (assessmentItemRef) within a test.