<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns="http://www.imsglobal.org/xsd/ims_qtiasiv1p2"
     targetNamespace="http://www.imsglobal.org/xsd/ims_qtiasiv1p2"
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
     version="IMS CC 1.4 QTI ASI 1.2.1"
     elementFormDefault="qualified"
     attributeFormDefault="unqualified">
    <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="https://purl.imsglobal.org/spec/w3/2001/schema/xsd/xml.xsd" />

    <xs:annotation>
        <xs:documentation>
            XSD Data File Information
            =========================
            Author:         Colin Smythe
            Date:           1st August, 2017
            Version:        1.2
            Status:         Final Release
            Description:    This model forms part of the IMS Common Cartridge v1.4 specification.  This model is the 
                            profile of the IMS QTI v1.2.1 specification.  The changes made to the original specification 
                            to create this profile are:
                            
                            Root
                            (a) Only one Assessment or one ObjectBank can be exchanged i.e. not Sections or Items;
                            (b) The qticomment attribute has been removed.
                            
                            Assessment
                            (a) Only a single Section must be contained in the Assessment;
                            (b) The metadata is mandatory (see the specification for the fields that must be defined) with a multiplicity of 1;
                            (c) All of the other Assessment fields have been removed apart from the optional PresentationMaterial;
                            (d) The title attribute has been made mandatory.
                            
                            Object Bank
                            (a) Only Items can be containd in the object bank;
                            (b) The Qticomment structure has been removed.
                            
                            Section
                            (a) All of the internal structure has been removed except the containment of Items (at least one is required);
                            (b) The language attribute has been removed.
                            
                            Item
                            (a) The deprecated attributes have been removed from the ItemMetadata class;
                            (b) All qticomment attributes have been removed from various classes;
                            (c) The Item pre and post condition attributes have been removed from the Item class;
                            (d) The itemproc_extension structure has been removed from the Item class;
                            (e) The reference structure has been removed from the Item class;
                            (f) The objectives attribute has been removed from the Item class;
                            (g) The itemcontrol attribute has been removed from the Item class;
                            (h) The item rubric attribute and its associated classes have been removed from the Item class;
                            (i) The duration attribute has been removed from the Item class;
                            (j) The itemmetadata attribute has been made mandatory in the Item class;
                            (k) The label, language and maxattempts attributes have been removed from the Item class;
                            (l) The interpretvar attribute has been removed frm the Outcomes class;
                            (m) The response_xy, response_num, response_grp and response_extension attributes have
                             been removed from the Presentation class;
                            (n) All extension attributes have been removed from various classes;
                            (o) The ItemType, LevelofDifficulty, RenderingType, ResponseMultiplicity, Status and TypeofSolution 
                            have been deleted;
                            (p) The ItemFeedback Class has been restructured as only flow_mat is used;
                            (q) A single decvar is required i.e. for the default variable SCORE.
                            
                            Item-Response
                            (a) The Rrange and Rarea attributes have been removed from the ResponseLabel Class.
                            
                            Item-Render
                            (a) The render_hotspot attributes and the RenderHotspot class have been removed;
                            (b) The render_slider attributes and the RenderSlider class have been removed;
                            (c) The render_extension attribute has been removed from the ResponseType class;
                            (d) The response_na attribute has been removed;
                            (e) The qticomment attribute has been removed from the ResponseLabel class;
                            
                            Item-General
                            (a) The Interpretvar class has been removed;
                            (b) The DurationBase class has been removed and all derived attributes from the Conditionvar and CompositionLogic classes;
                            (c) The var_extension attribute has been removed from the Conditionvar class;
                            (d) The qticomment attributes have been removed from the Hint and Solution classes;
                            (e) Setvar is restricted to the Set action;
                            (f) Variable types are restricted to 'Integer' and 'Decimal';
                            (g) The defaultval and cutvalue, attributes for decvar have been removed;
                            (h) Outcomes is limtied to a single decvar which must have only the variable "SCORE" declared;
                            (i) The classes varlt, varlte, vargt, vargte, varinside, varsubset and unanswered have been removed;
                            (j) The classes 'and', 'or', 'not' and 'conditionvar' have been significantly simplied i.e. see clause above for detail
                            (k) The feedbacktype attribute for displayfeedback has been made mandatory with no default.
                            
                            Selection and Ordering
                            (a) The entire Selection and Ordering (Package) has been removed.
                            
                            Outcomes
                            (a) The entire Outcomes Processing (Package) has been removed.
                            
                            Material
                            (a) The Reference Class has been removed as this is not required;
                            (b) All entityref attributes have been removed;
                            (c) Extensions have been removed;
                            (d) Only 'mattext', 'matref' and 'matbreak' are permitted as types of material.
                            
                            Common
                            (a) The Rubric class has been removed Items and Sections and it is only permitted to contain a single instance of material;
                            (b) The ContextControl class has been removed i.e. no Control switches required;
                            (c) The QtiComment Class has been removed;
                            (d) The MetadataRule Class has been removed;
                            (e) the Parameterization Class has been removed;
                            (f) The 'view' attribute has been removed;
                            (g) The Vocabulary Class has been removed and its attribute in the QtiMetadata Class also removed.

            History:        Version 1.0: This profile is taken from the UML description of the QTIv1.2.1 specification.
                            Version 1.1: Material has been returned as an alternative to flow_mat in ItemFeedback, 
                            SolutionMaterial and HintMaterial.  Also, Assessment Rubric has been permitted but it must 
                            only contain a single instance of material.
                            Version 1.2: The 'or' element has been re-introduced;
                            Version 1.2.1: Bug fix - the use of the 'or' element has been permitted within the 'conditionvar'.

            License:        IPR and Distribution Notices

                            This machine readable file is derived from IMS Global specification IMS [spec name] Version [x.x]
                            found at http://www.imsglobal.org/[xxx] and the original IMS Global schema binding or code base
                            http://www.imsglobal.org/[binding document].

                            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 procedures with respect to rights in IMS 
                            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-2017. All Rights Reserved.

                            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/license.html.

                            Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals.

                            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 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)
            (b) Papyrus - v1.1.3 (and later)

            Source XSLT File Information
            ============================
            XSL Generator:    Specificationv1p0_GenerationToolv1.xsl
            XSLT Processor:   Saxon-EE-9.6.0.7
            Release:          1.0
            Date:             31st January, 2017
            Autogen Engineer: Colin Smythe (IMS Global, UK)
            Autogen Date:     2017-06-28

            IMS Global Auto-generation Binding Tool-kit (I-BAT)
            ===================================================
            This file was auto-generated using the IMS Global 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 Global 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 Global "I-BAT" documentation available at the IMS Global web-site:
            http://www.imsglobal.org.

            Tool Copyright:  2012-2017  (c) IMS Global Learning Consortium Inc.  All Rights Reserved.
        </xs:documentation>
    </xs:annotation>

    <!-- Generate Global Attributes (non-assigned) ******************************************************** -->

    <!-- ================================================================================================== -->

    <!-- Generate Global Attributes *********************************************************************** -->

    <!-- ================================================================================================== -->

    <!-- Generate Global List Types *********************************************************************** -->

    <!-- ================================================================================================== -->

    <!-- Generate Namespaced extension Group  ************************************************************* -->

    <!-- ================================================================================================== -->

    <!-- Generate Special DataTypes  ********************************************************************** -->

    <xs:complexType name="EmptyPrimitiveType.Type">
        <xs:complexContent>
            <xs:restriction base="xs:anyType" />
        </xs:complexContent>
    </xs:complexType>

    <!-- ================================================================================================== -->

    <!-- Generate the enumerated simpleType declarations ************************************************** -->

    <!-- ================================================================================================== -->

    <!-- Generate the simpleType elements based on IMS data-types (Parameter) ***************************** -->

    <!-- ================================================================================================== -->

    <!-- Generate the simpleType elements based on IMS data-types (Derived) ******************************* -->

    <!-- ================================================================================================== -->

    <!-- Generate the simpleType elements based on IMS data-types (Union) ********************************* -->

    <!-- ================================================================================================== -->

    <!-- Generate the simpleType elements based on IMS data-types (Complex) ******************************* -->

    <!-- ================================================================================================== -->

    <!-- Generate the derived data-type elements based upon simpleType ************************************ -->

    <!-- ================================================================================================== -->

    <!-- Generate the derived data-type elements based upon derived simpleType **************************** -->

    <!-- ================================================================================================== -->

    <!-- Generate the ComplexTypes ************************************************************************ -->

    <xs:complexType name="altmaterial.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    This is the container for alternative content.  This content is to be
                
                    displayed if, for whatever reason, the primary content cannot be 
   
                                rendered.  Alternative language implementations of the host 'material' 
  
                                 element are also supported using this structure.
                        
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice minOccurs="1" maxOccurs="unbounded">
                <xs:element name="mattext" type="mattext.Type" minOccurs="1" maxOccurs="1" />
                <xs:element name="matref" type="matref.Type" minOccurs="1" maxOccurs="1" />
                <xs:element name="matbreak" type="EmptyPrimitiveType.Type" minOccurs="1" maxOccurs="1" />
            </xs:choice>
        </xs:sequence>
        <xs:attribute ref="xml:lang" use="optional" />
    </xs:complexType>

    <xs:complexType name="and.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    QTI General
                    
                    This defines the
                set of clauses that can be used within the 
                    logic statements of 'and',
                'or' and 'not'.  These logic statements
                    enable the construction of co-
                mplex conditional tests.
                    
                    Common Cartridge Profil-
                e
                    
                    The extension has been removed.  All of the co-
                nditions operating 
                    on duration have been removed.  The 'or', 'and' a-
                nd 'not' have been 
                    considerably simplified.
                         
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice minOccurs="1" maxOccurs="unbounded">
                <xs:element name="not" type="not.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="varequal" type="varequal.Type" minOccurs="1" maxOccurs="1" />
            </xs:choice>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="assessment.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    QTI General
                    
                    An Assessment o-
                bject is the logical construction of the test.  An Assessment must 
                    c-
                ontain at least one Section which in turn will contain Items and/or Sections.  An 
       
                            Assessment must eventually be constructed from a set of Items i.e. questions
 
                                  that are to be offered in the test.  An Assessment object contains all  
                of the information 
                    to make the use of individual Items meaningful i.-
                e. apart from the Sections the object 
                    includes the relationships bet-
                ween the Sections, the group evaluation processing and 
                    the correspon-
                ding feedback.
                    
                    Common Cartridge Profile
         
                          
                    The Assessment must consist of only one Section.  The only 
                other permitted attributes 
                    are the mandatory identifier and title.   
                Optional language, metadata, rubric and 
                    presentation_material is also
                supported.
                                                                               
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="qtimetadata" type="qtimetadata.Type" minOccurs="0" maxOccurs="1" />
            <xs:element name="rubric" type="rubric.Type" minOccurs="0" maxOccurs="1" />
            <xs:element name="presentation_material" type="presentation_material.Type" minOccurs="0" maxOccurs="1" />
            <xs:element name="section" type="section.Type" minOccurs="1" maxOccurs="1" />
        </xs:sequence>
        <xs:attribute name="ident" use="required" type="xs:string" />
        <xs:attribute name="title" use="required" type="xs:string" />
        <xs:attribute ref="xml:lang" use="optional" />
    </xs:complexType>

    <xs:complexType name="conditionvar.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    QTI General
                    
                    The conditional 
                test that is to be applied to the user’s response.  
                    A wide range of  
                separate and combinatorial tests can be applied.
                    
                    
                Common Cartridge Profile
                    
                    The extension has been  
                removed.  All of the conditions operating 
                    on duration have been remo-
                ved.  The only permited conditions are 
                    'varequal', 'varsubstring', '-
                and', 'other'.
                                                                           
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice minOccurs="1" maxOccurs="unbounded">
                <xs:element name="and" type="and.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="or" type="or.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="other" type="EmptyPrimitiveType.Type" minOccurs="1" maxOccurs="1" />
                <xs:element name="varequal" type="varequal.Type" minOccurs="1" maxOccurs="1" />
                <xs:element name="varsubstring" type="varsubstring.Type" minOccurs="1" maxOccurs="1" />
            </xs:choice>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="flow.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    This is the container for all of the instructions for the presentati-
                on with flow 
                    blocking of the question during a test.  This informati-
                on includes the actual 
                    material to be presented.  The labels for the 
                possible responses are also 
                    identified and these are used by the res-
                ponse processing element defined 
                    elsewhere in the Item.
             
                                                                                                          
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice minOccurs="1" maxOccurs="unbounded">
                <xs:element name="flow" type="flow.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="material" type="material.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="material_ref" type="material_ref.Type" minOccurs="1" maxOccurs="1" />
                <xs:element name="response_lid" type="response_lid.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="response_str" type="response_str.Type" minOccurs="1" maxOccurs="1"/>
            </xs:choice>
        </xs:sequence>
        <xs:attribute name="class" use="optional" default="Block" type="xs:string" />
    </xs:complexType>

    <xs:complexType name="flow_label.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    This is the blocking/paragraph equivalent to the 'response_label'
   
                                structure.  This structure shold always be used to encapsulate the
       
                            'response_label construct.
                                                   
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice minOccurs="1" maxOccurs="unbounded">
                <xs:element name="flow_label" type="flow_label.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="response_label" type="response_label.Type" minOccurs="1" maxOccurs="1"/>
            </xs:choice>
        </xs:sequence>
        <xs:attribute name="class" use="optional" default="Block" type="xs:string" />
    </xs:complexType>

    <xs:complexType name="flow_mat.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    This allows the materials to be displayed to the users to be grouped 
                together 
                    using flows.  The manner in which these flows are handled is
                dependent upon 
                    the display-engine.
                                  
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice minOccurs="1" maxOccurs="unbounded">
                <xs:element name="flow_mat" type="flow_mat.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="material" type="material.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="material_ref" type="material_ref.Type" minOccurs="1" maxOccurs="1" />
            </xs:choice>
        </xs:sequence>
        <xs:attribute name="class" use="optional" default="Block" type="xs:string" />
    </xs:complexType>

    <xs:complexType name="hint.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    QTI General
                    
                    Contains the hi-
                nts(s) that are to be revealed to the participant.  When these hints are revealed is outs-
                ide the scope of the 
                    specification.  The information can be revealed 
                in several manners.  The default mode is to show the 'Complete' hint.
                    
                
                    Common Cartridge Profile
                    
                    The
                material is presented in the form of flow_mat only.  The only form of feedback is 'Comple-
                te'.
                                                                                     
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="hintmaterial" type="hintmaterial.Type" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
        <xs:attribute name="feedbackstyle" use="optional" default="Complete">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="Complete" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>

    <xs:complexType name="hintmaterial.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    This is the information that is presented as a hint.
                
            </xs:documentation>
        </xs:annotation>
        <xs:choice>
            <xs:element name="flow_mat" type="flow_mat.Type" minOccurs="1" maxOccurs="unbounded" />
            <xs:element name="material" type="material.Type" minOccurs="1" maxOccurs="unbounded" />
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="item.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    An Item the smallest exchangeable object within QTI-XML.  An Item is 
                more than a 
                    ‘Question’ in that it contains the ‘Question’, the prese-
                ntation/rendering instructions, 
                    the response processing to be applied
                to the participant’s response(s), the feedback 
                    that may be presented 
                (including hints and solutions) and the meta-data describing 
                    the Ite-
                m.
                                                                                       
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="itemmetadata" type="itemmetadata.Type" minOccurs="0" maxOccurs="1" />
            <xs:element name="presentation" type="presentation.Type" minOccurs="0" maxOccurs="1" />
            <xs:element name="resprocessing" type="resprocessing.Type" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="itemfeedback" type="itemfeedback.Type" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
        <xs:attribute name="ident" use="required" type="xs:string" />
        <xs:attribute name="title" use="optional" type="xs:string" />
        <xs:attribute ref="xml:lang" use="optional" />
    </xs:complexType>

    <xs:complexType name="itemfeedback.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    The container for the feedback that is to be presented as a result of
                the 
                    user’s responses.  The feedback can include hints and solutions  
                and 
                    both of these can be revealed in a variety of different ways.
   
                                                                                                          
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice minOccurs="1" maxOccurs="unbounded">
                <xs:choice minOccurs="1" maxOccurs="1">
                    <xs:element name="flow_mat" type="flow_mat.Type" minOccurs="1" maxOccurs="1"/>
                    <xs:element name="material" type="material.Type" minOccurs="1" maxOccurs="1"/>
                </xs:choice>
                <xs:element name="solution" type="solution.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="hint" type="hint.Type" minOccurs="1" maxOccurs="1"/>
            </xs:choice>
        </xs:sequence>
        <xs:attribute name="ident" use="required" type="xs:string" />
        <xs:attribute name="title" use="optional" type="xs:string" />
    </xs:complexType>

    <xs:complexType name="itemmetadata.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    Contains all of the QTI-specific metada-data 
                    to 
                be applied to the Item.  This meta-data can 
                    consist of either entries
                defined using an 
                    external vocabulary or the individually named 
     
                              entries.  Usage of the contained attributes are 
                    deprec-
                ated apart from the 'qtimetadata' attribute.
                                             
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="qtimetadata" type="qtimetadata.Type" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="material.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    This is the container for any content that is to be displayed by the 
                question-engine. 
                    The supported content types are text (emphasised or 
                not), images, audio, video, 
                    application and applet.  The content can 
                be internally referenced to avoid the need 
                    for duplicate copies.  Al-
                ternative information can be defined – this is used if the 
                    primary c-
                ontent cannot be displayed.
                    
                    Common Cartridge Pro-
                file
                    
                    Only the 'mattext', 'matref' and 'matbreak' 
                types are permitted.
                                                                     
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice minOccurs="1" maxOccurs="unbounded">
                <xs:element name="mattext" type="mattext.Type" minOccurs="1" maxOccurs="1" />
                <xs:element name="matref" type="matref.Type" minOccurs="1" maxOccurs="1" />
                <xs:element name="matbreak" type="EmptyPrimitiveType.Type" minOccurs="1" maxOccurs="1" />
            </xs:choice>
            <xs:element name="altmaterial" type="altmaterial.Type" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
        <xs:attribute name="label" use="optional" type="xs:string" />
        <xs:attribute ref="xml:lang" use="optional" />
    </xs:complexType>

    <xs:complexType name="not.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    QTI General
                    
                    This defines the
                set of clauses that can be used within the 
                    logic statements of 'and',
                'or' and 'not'.  These logic statements
                    enable the construction of co-
                mplex conditional tests.
                    
                    Common Cartridge Profil-
                e
                    
                    The extension has been removed.  All of the co-
                nditions operating 
                    on duration have been removed.  The 'or', 'and' a-
                nd 'not' have been 
                    considerably simplified.
                         
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice minOccurs="1" maxOccurs="unbounded">
                <xs:element name="and" type="and.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="or" type="or.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="varequal" type="varequal.Type" minOccurs="1" maxOccurs="1" />
            </xs:choice>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="objectbank.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    QTI General
                    
                    An object bank  
                is an unordered set of items and sections.  It is recommended
                    that th-
                ere is a metadata description for the object bank as a whole.  The object 
               
                    bank should have a globally unique identifier.
                    
                  
                 Common Cartridge Profile
                    
                    In the Common Cartridge
                the object-bank can only contain Items.  Meta-data 
                    support is availa-
                ble but the profile has no mandated entries.
                                             
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="qtimetadata" type="qtimetadata.Type" minOccurs="0" maxOccurs="1" />
            <xs:element name="item" type="item.Type" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
        <xs:attribute name="ident" use="required" type="xs:string" />
    </xs:complexType>

    <xs:complexType name="or.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    QTI General
                    
                    This defines the
                set of clauses that can be used within the 
                    logic statements of 'and',
                'or' and 'not'.  These logic statements
                    enable the construction of co-
                mplex conditional tests.
                    
                    Common Cartridge Profil-
                e
                    
                    The extension has been removed.  All of the co-
                nditions operating 
                    on duration have been removed.  The 'or', 'and' a-
                nd 'not' have been 
                    considerably simplified.
                         
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice minOccurs="1" maxOccurs="unbounded">
                <xs:element name="not" type="not.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="varequal" type="varequal.Type" minOccurs="1" maxOccurs="1" />
            </xs:choice>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="outcomes.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    Contains all of the variable declarations that are to be 
           
                        made available to the scoring algorithm.  Each variable 
                    is d-
                eclared using the 'decvar' structure apart from the 
                    default variable 
                called ‘SCORE’ that is an integer and 
                    has a default value of zero (0-
                ).
                    
                    Common Cartridge Profile
                    

                                   A single variable is permitted.  This is "SCORE".
                     
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="decvar" type="decvar.Type" minOccurs="1" maxOccurs="1" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="presentation.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    Contains all of the instructions for the presentation of the question
                
                    during an evaluation.  This information includes the actual material 
                
                    to be presented.  The labels for the possible responses are also
    
                                identified and these are used by the response processing element 
        
                           defined elsewhere in the Item.
                                                
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice minOccurs="1" maxOccurs="1">
                <xs:element name="flow" type="flow.Type" minOccurs="1" maxOccurs="1"/>
                <xs:choice minOccurs="1" maxOccurs="unbounded">
                    <xs:element name="material" type="material.Type" minOccurs="1" maxOccurs="1"/>
                    <xs:element name="response_lid" type="response_lid.Type" minOccurs="1" maxOccurs="1"/>
                    <xs:element name="response_str" type="response_str.Type" minOccurs="1" maxOccurs="1"/>
                </xs:choice>
            </xs:choice>
        </xs:sequence>
        <xs:attribute name="label" use="optional" type="xs:string" />
        <xs:attribute ref="xml:lang" use="optional" />
        <xs:attribute name="x0" use="optional" type="xs:string" />
        <xs:attribute name="y0" use="optional" type="xs:string" />
        <xs:attribute name="width" use="optional" type="xs:string" />
        <xs:attribute name="height" use="optional" type="xs:string" />
    </xs:complexType>

    <xs:complexType name="presentation_material.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    This is the information that is to be presented to set the context f-
                or the 
                    contained objects.  This can be used to contain question-based
                material 
                    that is common to all of the child objects.  This is used in
                Assessment and 
                    Section objects. This is the information that is used 
                to describe the solution. 
                                                               
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="flow_mat" type="flow_mat.Type" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="qtimetadata.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    QTI General
                    
                    The QTI-specific
                meta-data assigned to the parent object i.e.
                    Assessment, Section, Item
                or Object-bank.  This approach 
                    requires that the approriate external 
                vocabulary is defined and
                    referenced in label/field tuple.
           
                        
                    Common Cartridge Profile
                    
               
                    The Vocabulary structure has been removed.
                                           
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="qtimetadatafield" type="qtimetadatafield.Type" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="qtimetadatafield.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    The structure responsible for containing each of 
                   
                the QTI-specific meta-data fields.  The label should 
                    appear in the v-
                ocabulary.  If no vocabulary is used 
                    then external validation cannot 
                take place.
                                                                              
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="fieldlabel" type="xs:string" minOccurs="1" maxOccurs="1" />
            <xs:element name="fieldentry" type="xs:string" minOccurs="1" maxOccurs="1" />
        </xs:sequence>
        <xs:attribute ref="xml:lang" use="optional" />
    </xs:complexType>

    <xs:complexType name="questestinterop.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    The root structure can consist of either:
                    
      
                             * A single object bank;
                    * An assessment;
                
                   * A set of item(s);
                    * A set of section(s);
                    * A-
                ny combination of items and sections.
                    
                    As the root
                this is mandatory and can 
                    occur once.
                    
          
                         Common Cartridge Profile
                    
                    A Common Cartr-
                idge is allowed to contain 
                    only an objectbank or an assessement. 
   
                                                                                                          
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice minOccurs="1" maxOccurs="1">
                <xs:element name="objectbank" type="objectbank.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="assessment" type="assessment.Type" minOccurs="1" maxOccurs="1"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="render_choice.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    Contains the instructions for the question-engine to render the ques-
                tion 
                    using a classical multiple choice format.  The number of possib-
                le responses 
                    is determined by the 'response_label' structures contai-
                ned.  Both flowed and 
                    non-flowed formats are supported
              
                                                                                                          
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="material" type="material.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="material_ref" type="material_ref.Type" minOccurs="1" maxOccurs="1" />
                <xs:element name="response_label" type="response_label.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="flow_label" type="flow_label.Type" minOccurs="1" maxOccurs="1"/>
            </xs:choice>
        </xs:sequence>
        <xs:attribute name="shuffle" use="optional" default="No">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="Yes" />
                    <xs:enumeration value="No" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="minnumber" use="optional" type="xs:string" />
        <xs:attribute name="maxnumber" use="optional" type="xs:string" />
    </xs:complexType>

    <xs:complexType name="render_fib.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    Contains the instructions for the question-engine to render the ques-
                tion 
                    using a classical fill-in blank format.  The number of possible 
                responses 
                    is determined by the 'response_label' structures contained.
                 Both flowed 
                    and non-flowed formats are supported.
                  
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="material" type="material.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="material_ref" type="material_ref.Type" minOccurs="1" maxOccurs="1" />
                <xs:element name="response_label" type="response_label.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="flow_label" type="flow_label.Type" minOccurs="1" maxOccurs="1"/>
            </xs:choice>
        </xs:sequence>
        <xs:attribute name="encoding" use="optional" default="utf-8" type="xs:string" />
        <xs:attribute name="charset" use="optional" default="ascii-us" type="xs:string" />
        <xs:attribute name="rows" use="optional" type="xs:string" />
        <xs:attribute name="columns" use="optional" type="xs:string" />
        <xs:attribute name="maxchars" use="optional" type="xs:string" />
        <xs:attribute name="minnumber" use="optional" type="xs:string" />
        <xs:attribute name="maxnumber" use="optional" type="xs:string" />
        <xs:attribute name="prompt" use="optional" default="Box">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="Asterisk" />
                    <xs:enumeration value="Box" />
                    <xs:enumeration value="Dashline" />
                    <xs:enumeration value="Underline" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="fibtype" use="optional" default="String">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="Decimal" />
                    <xs:enumeration value="Integer" />
                    <xs:enumeration value="Scientific" />
                    <xs:enumeration value="String" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>

    <xs:complexType name="respcondition.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    Contains the actual test to be applied to the user responses 
       
                            to determine their correctness or otherwise.  Each 'respcondition' 
          
                         contains an actual test, the assignment of a value to the associate 
            
                       scoring variables and the identification of the feedback to be 
                   
                associated with the test.
                                                                
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="conditionvar" type="conditionvar.Type" minOccurs="1" maxOccurs="1" />
            <xs:element name="setvar" type="setvar.Type" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="displayfeedback" type="displayfeedback.Type" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
        <xs:attribute name="title" use="optional" type="xs:string" />
        <xs:attribute name="continue" use="optional" default="No">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="Yes" />
                    <xs:enumeration value="No" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>

    <xs:complexType name="response_label.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    This contains the possible response choices that are presented 
     
                              to the user.  This information includes the material to be shown 
          
                         to the user and the logical label that is associated with that 
                 
                  response.  The label is used in the response processing.  Flow 
                    and 
                non-flow approaches are supported.
                                                       
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="material" type="material.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="material_ref" type="material_ref.Type" minOccurs="1" maxOccurs="1" />
                <xs:element name="flow_mat" type="flow_mat.Type" minOccurs="1" maxOccurs="1"/>
            </xs:choice>
        </xs:sequence>
        <xs:attribute name="ident" use="required" type="xs:string" />
        <xs:attribute name="labelrefid" use="optional" type="xs:string" />
        <xs:attribute name="rshuffle" use="optional" default="Yes">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="Yes" />
                    <xs:enumeration value="No" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="match_group" use="optional" type="xs:string" />
        <xs:attribute name="match_max" use="optional" type="xs:string" />
    </xs:complexType>

    <xs:complexType name="response_lid.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    QTI General
                    
                    This contains t-
                he instructions for the presentation of questions whose response will be either a 'respon-
                se_lid' (logical identifier), 
                    'response_xy' (xy-co-ordinate), 'respo-
                nse_str' (a string), 'response_num' (a number) and 'response_grp' ( a group of logical
   
                                identifiers).  The question can be rendered in a variety of ways depending
                on the way in which the material is to be presented to the 
                    participa-
                nt.
                    
                    Common Cartridge Profile
                    
                
                    Only the response_lid and response_str response types are supported  
                with render_choice and render_fib rendering.
                                             
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice minOccurs="0" maxOccurs="1">
                <xs:element name="material" type="material.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="material_ref" type="material_ref.Type" minOccurs="1" maxOccurs="1" />
            </xs:choice>
            <xs:choice minOccurs="1" maxOccurs="1">
                <xs:element name="render_choice" type="render_choice.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="render_fib" type="render_fib.Type" minOccurs="1" maxOccurs="1"/>
            </xs:choice>
            <xs:choice minOccurs="0" maxOccurs="1">
                <xs:element name="material" type="material.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="material_ref" type="material_ref.Type" minOccurs="1" maxOccurs="1" />
            </xs:choice>
        </xs:sequence>
        <xs:attribute name="rcardinality" use="optional" default="Single">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="Single" />
                    <xs:enumeration value="Multiple" />
                    <xs:enumeration value="Ordered" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="rtiming" use="optional" default="No">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="Yes" />
                    <xs:enumeration value="No" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="ident" use="required" type="xs:string" />
    </xs:complexType>

    <xs:complexType name="response_str.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    QTI General
                    
                    This contains t-
                he instructions for the presentation of questions whose response will be either a 'respon-
                se_lid' (logical identifier), 
                    'response_xy' (xy-co-ordinate), 'respo-
                nse_str' (a string), 'response_num' (a number) and 'response_grp' ( a group of logical
   
                                identifiers).  The question can be rendered in a variety of ways depending
                on the way in which the material is to be presented to the 
                    participa-
                nt.
                    
                    Common Cartridge Profile
                    
                
                    Only the response_lid and response_str response types are supported  
                with render_choice and render_fib rendering.
                                             
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice minOccurs="0" maxOccurs="1">
                <xs:element name="material" type="material.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="material_ref" type="material_ref.Type" minOccurs="1" maxOccurs="1" />
            </xs:choice>
            <xs:choice minOccurs="1" maxOccurs="1">
                <xs:element name="render_choice" type="render_choice.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="render_fib" type="render_fib.Type" minOccurs="1" maxOccurs="1"/>
            </xs:choice>
            <xs:choice minOccurs="0" maxOccurs="1">
                <xs:element name="material" type="material.Type" minOccurs="1" maxOccurs="1"/>
                <xs:element name="material_ref" type="material_ref.Type" minOccurs="1" maxOccurs="1" />
            </xs:choice>
        </xs:sequence>
        <xs:attribute name="rcardinality" use="optional" default="Single">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="Single" />
                    <xs:enumeration value="Multiple" />
                    <xs:enumeration value="Ordered" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="rtiming" use="optional" default="No">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="Yes" />
                    <xs:enumeration value="No" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="ident" use="required" type="xs:string" />
    </xs:complexType>

    <xs:complexType name="resprocessing.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    This contains all of the instructions for the response 
             
                      processing.  This includes the scoring variables to contain 
                    the
                associated scores and the set of response condition 
                    tests that are to
                be applied to the received user response.
                                                
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="outcomes" type="outcomes.Type" minOccurs="1" maxOccurs="1" />
            <xs:choice minOccurs="1" maxOccurs="unbounded">
                <xs:element name="respcondition" type="respcondition.Type" minOccurs="1" maxOccurs="1"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="rubric.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    This is used to contain contextual information i.e. rubric that 
    
                               is important to the object e.g. it could contain standard data 
           
                        values that might or might not be useful for answering the 
                    q-
                uestion.
                    
                    Common Cartridge Profile
               
                    
                    This is used in assessments to provide instructions.  Only a 
   
                                single mattext is permitted in the material.
                             
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="material" type="material.Type" minOccurs="1" maxOccurs="1" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="section.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    QTI General
                    
                    A Section is the
                core grouping concept within QTI.  A Section consists of one or more Items or Sections (o-
                r
                    references to Items and Sections).  In general, the objects contain-
                ed within a Secton will have some relationship 
                    either in terms of co-
                ntent or content delivery.  The Section data structure is used to define arbitrarily comp-
                lex 
                    hierarchical section and item data structures.  It may contain m-
                eta-data, objectives, rubric control switches, 
                    assessment-level proc-
                essing, feedback and selection and sequencing information for sections and items.
        
                           
                    Common Cartridge Profile
                    
            
                       In Common Cartridge the Section can only contain a list of Items.  No metadata is  
                permitted.  The identifier is 
                    mandatory but the title and language a-
                re optional.
                    
                                                        
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="item" type="item.Type" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
        <xs:attribute name="ident" use="required" type="xs:string" />
        <xs:attribute name="title" use="optional" type="xs:string" />
        <xs:attribute ref="xml:lang" use="optional" />
    </xs:complexType>

    <xs:complexType name="solution.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    QTI General
                    
                    Contains the so-
                lution(s) that are to be revealed to the participant.  When these solutions are revealed  
                is outside the scope of the 
                    specification.  The information can be r-
                evealed in several manners.  The default mode is to show the 'Complete' solution.
        
                           
                    Common Cartridge Profile
                    
            
                       The material is presented in the form of flow_mat only.  The only form of feedback 
                is 'Complete'.
                                                                           
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="solutionmaterial" type="solutionmaterial.Type" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
        <xs:attribute name="feedbackstyle" use="optional" default="Complete">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="Complete" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>

    <xs:complexType name="solutionmaterial.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    This is the information that is used to describe the solution. 
     
                                                                                                          
            </xs:documentation>
        </xs:annotation>
        <xs:choice>
            <xs:element name="flow_mat" type="flow_mat.Type" minOccurs="1" maxOccurs="unbounded" />
            <xs:element name="material" type="material.Type" minOccurs="1" maxOccurs="unbounded" />
        </xs:choice>
    </xs:complexType>

    <!-- ================================================================================================== -->

    <!-- Generate the SOAP Binding ComplexTypes *********************************************************** -->

    <!-- ================================================================================================== -->

    <!-- Generate the derived ComplexTypes **************************************************************** -->

    <xs:complexType name="decvar.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    QTI General
                    
                    This is used  f-
                or the declaration of the scoring variables.
                    The name of the variable 
                that is to be declared.  The default 
                    name is ‘SCORE’.  All numeric v-
                ariables have the associated
                     ‘x.min’, ‘x.max’ and ‘x.normalised’ var-
                iables declared.
                    Several of the optional attributes depend upon the t-
                ype of
                    variable that is declared.
                    
               
                    Common Cartridge Profile
                    
                    Only the variable t-
                ypes of decimal and integer are permitted.
                    Only a single "SCORE" vari-
                able is permitted.
                                                                       
            </xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="varname" use="required" fixed="SCORE" type="xs:string" />
                <xs:attribute name="vartype" use="optional" default="Integer">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:enumeration value="Decimal" />
                            <xs:enumeration value="Integer" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="minvalue" use="optional" type="xs:string" />
                <xs:attribute name="maxvalue" use="optional" type="xs:string" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="displayfeedback.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    This is used for assigning an associated feedback to the 
           
                        aggregated scoring if the ‘True’ state results.  Feedback
                    for 
                hints, solutions and response processing are supported.
                    The feedback  
                is identified using the pointer 'linkrefid'.
                                             
            </xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="feedbacktype" use="required">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:enumeration value="Response" />
                            <xs:enumeration value="Solution" />
                            <xs:enumeration value="Hint" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="linkrefid" use="required" type="xs:string" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="material_ref.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    This is used to contain a reference to the required full material bl-
                ock.  This 
                    material will have had an identifier assigned to enable s-
                uch a reference to 
                    be reconciled when the instance is parsed into the
                system.
                                                                                  
            </xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="EmptyPrimitiveType.Type">
                <xs:attribute name="linkrefid" use="required" type="xs:string" />
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="matref.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    This is used to contain a reference to the required full material bl-
                ock.  This 
                    material will have had an identifier assigned to enable s-
                uch a reference to 
                    be reconciled when the instance is parsed into the
                system.
                                                                                  
            </xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="EmptyPrimitiveType.Type">
                <xs:attribute name="linkrefid" use="required" type="xs:string" />
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="mattext.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    This is the container of any text that is to be displayed to the use-
                rs.
                    It is the base type for normal and emphasised text.
              
                                                                                                          
            </xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="texttype" use="optional" default="text/plain" type="xs:string" />
                <xs:attribute name="charset" use="optional" default="ascii-us" type="xs:string" />
                <xs:attribute name="label" use="optional" type="xs:string" />
                <xs:attribute name="uri" use="optional" type="xs:string" />
                <xs:attribute name="width" use="optional" type="xs:string" />
                <xs:attribute name="height" use="optional" type="xs:string" />
                <xs:attribute name="x0" use="optional" type="xs:string" />
                <xs:attribute name="y0" use="optional" type="xs:string" />
                <xs:attribute ref="xml:lang" use="optional" />
                <xs:attribute ref="xml:space" use="optional" default="default" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="setvar.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    QTI General
                    
                    This is respons-
                ible for changing the value of the scoring 
                    variable as a result of t-
                he associated response processing test.
                    The default action is to 'Set'
                the 'SCORE' variable to the value
                    given in the string.
               
                    
                    Common Cartridge Profile
                    
                   
                Only the actons Set, Add and Subtract are premitted.
                                     
            </xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="varname" use="optional" default="SCORE" type="xs:string" />
                <xs:attribute name="action" use="optional" default="Set">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:enumeration value="Set" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="varequal.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    This is the test of equivalence.  The data for the test is 
         
                          contained as a string.  The accompanying attributes are
                    the 
                identifier for the associated 'response_label', the 
                    ordinal 'index'  
                of the response and whether or not the
                    value is case-sensitive when p-
                rocessing strings.
                                                                       
            </xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="respident" use="required" type="xs:string" />
                <xs:attribute name="case" use="optional" default="No">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:enumeration value="No" />
                            <xs:enumeration value="Yes" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="varsubstring.Type" abstract="false" mixed="false">
        <xs:annotation>
            <xs:documentation source="comment">
                
                    This is the test for a contained substring. 
                    The 
                data for comparison is presented as a 
                    string.  The associated attrib-
                utes are the 
                    response label identifier, the ordinal index of 
       
                            the response and whether or not the value is 
                    case-sensit-
                ive when processing the strings.
                                                         
            </xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="respident" use="required" type="xs:string" />
                <xs:attribute name="case" use="optional" default="No">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:enumeration value="No" />
                            <xs:enumeration value="Yes" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <!-- ================================================================================================== -->

    <!-- Declaration of the elements (Complex) ************************************************************ -->

    <!-- ================================================================================================== -->

    <!-- Declaration of the elements (Derived) ************************************************************ -->

    <!-- ================================================================================================== -->

    <!-- Declaration of the root element(s) *************************************************************** -->

    <xs:element name="questestinterop" type="questestinterop.Type" />

    <!-- ================================================================================================== -->

</xs:schema>
