Please note that this is a work in progress!
This is the first of my QTI XML Building Blocks posts, where I will give the basic structure of an assessment item in a QTI XML file, that can be used as a framework that can be filled in with the building blocks that I will cover in future posts. This is very much a work in progress and I can’t promise everything is correct. At this stage I am just trying to create something that is useful to me, and putting it out there in case it is useful to anyone else!
So, here is the basic structure of a QTI XML document (or the basic structure I’ve been using/copying for writing questions):
<?xml version="1.0" encoding="UTF-8"?> <!-- Define question properties --> <!-- Some of these are obvious, others are XML namespace definitions - not all of these are generally needed adaptive - if set to false, only one attempt is allowed, so this is best for summative items. If set to true, multiple attempts are allowed and the feedback/outcomes can be changed, and this is better for formative items, where a user can have multiple goes. This should not be confused with an adaptive test, where the questions presented change depending on a user's answers to previous questions, although a similar thing can be achieved within an adaptive item. --> <assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_v2p1" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ma="http://mathassess.qtitools.org/xsd/mathassess" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p1 imsqti_v2p1.xsd http://mathassess.qtitools.org/xsd/mathassess mathassess.xsd"> xml:lang="en" adaptive="true" timeDependent="false" identifier="questionidentifier" title="Question Title"> <!-- VARIABLE DECLARATIONS --> <!-- Here we define all of the variables that are going to be used in the question --> <!-- Response Declarations --> <!-- These are the variables used in response processing, including those for storing the response(s) given by the user --> <responseDeclaration identifier="RESPONSE" cardinality="single" baseType="integer"/> <!-- Outcome Declarations --> <!-- These are the variables used for returning an outcome to the user, e.g. score, feedback --> <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="integer"/> <!-- Template Declarations --> <!-- These are the variables used for creating the question, e.g. the variables used for randomising values within a question --> <templateDeclaration identifier="iA" cardinality="single" baseType="integer" mathVariable="true"/> <!-- TEMPLATE PROCESSING --> <templateProcessing> <!-- Here template variables are assigned values, constraints are defined etc --> </templateProcessing> <!-- ITEM BODY --> <itemBody> <!-- The itemBody contains the content of the item, including the question, interactions, feedback sections (which are initially hidden) etc --> </itemBody> <!-- RESPONSE PROCESSING --> <responseProcessing> <!-- Here the user's response is assessed, compared the correct answer etc, and outcome variable, e.g. score and which feedback to show, are set --> </responseProcessing> </assessmentItem>