Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?xml version = "1.0" encoding = "UTF-8"?>
2
<xs:schema xmlns="http://www.imsglobal.org/xsd/ims_qtiasiv1p2"
3
    targetNamespace="http://www.imsglobal.org/xsd/ims_qtiasiv1p2"
4
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
5
    xmlns:sch="http://purl.oclc.org/dsdl/schematron"
6
    version="IMS CC 1.1 QTI ASI 1.2.1"
7
    elementFormDefault="qualified"
8
    attributeFormDefault="unqualified">
9
    <xs:import namespace = "http://www.w3.org/XML/1998/namespace" schemaLocation = "xml.xsd"/>
10
    <xs:annotation>
11
        <xs:documentation>
12
            XSD Data File Information
13
            -------------------------
14
            Author:         Colin Smythe
15
            Date:           31st October, 2010
16
            Version:        1.1
17
            Status:         Final Release
18
            Description:    This model forms part of the IMS Common Cartridge v1.1 specification.  This model is the
19
                            profile of the IMS QTI v1.2.1 specification.  The changes made to the original specification
20
                            to create this profile are:
21
 
22
                            Root
23
                            (a) Only one Assessment or one ObjectBank can be exchanged i.e. not Sections or Items;
24
                            (b) The qticomment attribute has been removed.
25
 
26
                            Assessment
27
                            (a) Only a single Section must be contained in the Assessment;
28
                            (b) The metadata is mandatory (see the specification for the fields that must be defined) with a multiplicity of 1;
29
                            (c) All of the other Assessment fields have been removed apart from the optional PresentationMaterial;
30
                            (d) The title attribute has been made mandatory.
31
 
32
                            Object Bank
33
                            (a) Only Items can be containd in the object bank;
34
                            (b) The Qticomment structure has been removed.
35
 
36
                            Section
37
                            (a) All of the internal structure has been removed except the containment of Items (at least one is required);
38
                            (b) The language attribute has been removed.
39
 
40
                            Item
41
                            (a) The deprecated attributes have been removed from the ItemMetadata class;
42
                            (b) All qticomment attributes have been removed from various classes;
43
                            (c) The Item pre and post condition attributes have been removed from the Item class;
44
                            (d) The itemproc_extension structure has been removed from the Item class;
45
                            (e) The reference structure has been removed from the Item class;
46
                            (f) The objectives attribute has been removed from the Item class;
47
                            (g) The itemcontrol attribute has been removed from the Item class;
48
                            (h) The item rubric attribute and its associated classes have been removed from the Item class;
49
                            (i) The duration attribute has been removed from the Item class;
50
                            (j) The itemmetadata attribute has been made mandatory in the Item class;
51
                            (k) The label, language and maxattempts attributes have been removed from the Item class;
52
                            (l) The interpretvar attribute has been removed frm the Outcomes class;
53
                            (m) The response_xy, response_num, response_grp and response_extension attributes have
54
                                been removed from the Presentation class;
55
                            (n) All extension attributes have been removed from various classes;
56
                            (o) The ItemType, LevelofDifficulty, RenderingType, ResponseMultiplicity, Status and TypeofSolution
57
                                have been deleted;
58
                            (p) The ItemFeedback Class has been restructured as only flow_mat is used;
59
                            (q) A single decvar is required i.e. for the default variable SCORE.
60
 
61
                            Item-Response
62
                            (a) The Rrange and Rarea attributes have been removed from the ResponseLabel Class.
63
 
64
                            Item-Render
65
                            (a) The render_hotspot attributes and the RenderHotspot class have been removed;
66
                            (b) The render_slider attributes and the RenderSlider class have been removed;
67
                            (c) The render_extension attribute has been removed from the ResponseType class;
68
                            (d) The response_na attribute has been removed;
69
                            (e) The qticomment attribute has been removed from the ResponseLabel class;
70
 
71
                            Item-General
72
                            (a) The Interpretvar class has been removed;
73
                            (b) The DurationBase class has been removed and all derived attributes from the Conditionvar and CompositionLogic classes;
74
                            (c) The var_extension attribute has been removed from the Conditionvar class;
75
                            (d) The qticomment attributes have been removed from the Hint and Solution classes;
76
                            (e) Setvar is restricted to the Set action;
77
                            (f) Variable types are restricted to 'Integer' and 'Decimal';
78
                            (g) The defaultval and cutvalue, attributes for decvar have been removed;
79
                            (h) Outcomes is limtied to a single decvar which must have only the variable "SCORE" declared;
80
                            (i) The classes or, varlt, varlte, vargt, vargte, varinside, varsubset and unanswered have been removed;
81
                            (j) The classes 'and', 'not' and 'conditionvar' have been significantly simplied i.e. see clause above for detail;
82
                            (k) The feedbacktype attribute for the displayfeedback element is now mandatory with no default value.
83
 
84
                            Selection and Ordering
85
                            (a) The entire Selection and Ordering (Package) has been removed.
86
 
87
                            Outcomes
88
                            (a) The entire Outcomes Processing (Package) has been removed.
89
 
90
                            Material
91
                            (a) The Reference Class has been removed as this is not required;
92
                            (b) All entityref attributes have been removed;
93
                            (c) Extensions have been removed;
94
                            (d) Only 'mattext', 'matref' and 'matbreak' are permitted as types of material.
95
 
96
                            Common
97
                            (a) The Rubric class has been removed Items and Sections and it is only permitted to contain a single instance of material;
98
                            (b) The ContextControl class has been removed i.e. no Control switches required;
99
                            (c) The QtiComment Class has been removed;
100
                            (d) The MetadataRule Class has been removed;
101
                            (e) the Parameterization Class has been removed;
102
                            (f) The 'view' attribute has been removed;
103
                            (g) The Vocabulary Class has been removed and its attribute in the QtiMetadata Class also removed.
104
 
105
            History:        Version 1.0: This profile is taken from the UML description of the QTIv1.2.1 specification.
106
                            Version 1.1: Material has been returned as an alternative to flow_mat in ItemFeedback,
107
                            SolutionMaterial and HintMaterial.  Also, Assessment Rubric has been permitted but it must
108
                            only contain a single instance of material.
109
 
110
            License:        IPR, License and Distribution Notices
111
 
112
                            This machine readable file is derived from IMS Global Learning Consortium (GLC) specification IMS Common Cartridge Version 1.1
113
                            found at http://www.imsglobal.org/cc and the original IMS GLC schema binding or code base
114
                            http://www.imsglobal.org/cc.
115
 
116
                            Recipients of this document are requested to submit, with their comments, notification of any
117
                            relevant patent claims or other intellectual property rights of which they may be aware that might be
118
                            infringed by the schema binding contained in this document.
119
 
120
                            IMS GLC takes no position regarding the validity or scope of any intellectual property or other
121
                            rights that might be claimed to pertain to the implementation or use of the technology described in this
122
                            document or the extent to which any license under such rights might or might not be available; neither
123
                            does it represent that it has made any effort to identify any such rights. Information on IMS GLCs
124
                            procedures with respect to rights in IMS GLC specifications can be found at the IMS GLC Intellectual Property
125
                            Rights web page: http://www.imsglobal.org/ipr/imsipr_policyFinal.pdf.
126
 
127
                            Copyright (c) IMS Global Learning Consortium 1999-2011. All Rights Reserved.
128
 
129
                            License Notice for Users
130
 
131
                            Users of products or services that include this document are hereby granted a worldwide, royalty-free,
132
                            non-exclusive license to use this document.
133
 
134
                            Distribution Notice for Developers
135
 
136
                            Developers of products or services that are not original incorporators of this document and
137
                            have not changed this document, that is, are distributing a software product that incorporates this
138
                            document as is from a third-party source other than IMS, are hereby granted permission to copy,
139
                            display and distribute the contents of this document in any medium for any purpose without fee or
140
                            royalty provided that you include this IPR, License and Distribution notice in its entirety on ALL
141
                            copies, or portions thereof.
142
 
143
                            Developers of products or services that are original incorporators of this document and wish
144
                            to provide distribution of this document as is or with modifications and developers of products and
145
                            services that are not original incorporators of this document and have changed this document, are
146
                            required to register with the IMS GLC community on the IMS GLC website as described in the following two
147
                            paragraphs:-
148
 
149
                            *  If you wish to distribute this document as is, with no modifications, you are hereby granted
150
                               permission to copy, display and distribute the contents of this document in any medium for any
151
                               purpose without fee or royalty provided that you include this IPR, License and Distribution notice in
152
                               its entirety on ALL copies, or portions thereof, that you make and you complete a valid license
153
                               registration with IMS and receive an email from IMS granting the license. To register, follow the
154
                               instructions on the IMS website: http://www.imsglobal.org/specificationdownload.cfm. Once
155
                               registered you are granted permission to transfer unlimited distribution rights of this document for the
156
                               purposes of third-party or other distribution of your product or service that incorporates this
157
                               document as long as this IPR, License and Distribution notice remains in place in its entirety;
158
 
159
                            *  If you wish to create and distribute a derived work from this document, you are hereby
160
                               granted permission to copy, display and distribute the contents of the derived work in any medium for
161
                               any purpose without fee or royalty provided that you include this IPR, License and Distribution
162
                               notice in its entirety on ALL copies, or portions thereof, that you make and you complete a valid
163
                               profile registration with IMS GLC and receive an email from IMS GLC granting the license. To register, follow
164
                               the instructions on the IMS GLC website: http://www.imsglobal.org/profile/. Once registered you are
165
                               granted permission to transfer unlimited distribution rights of the derived work for the purposes of
166
                               third-party or other distribution of your product or service that incorporates the derived work as long
167
                               as this IPR, License and Distribution notice remains in place in its entirety.
168
 
169
                            The limited permissions granted above are perpetual and will not be revoked by IMS GLC or its
170
                            successors or assigns.
171
 
172
                            THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS
173
                            EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTERS OWN RISK, AND NEITHER THE CONSORTIUM
174
                            NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF
175
                            ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION.
176
 
177
            Source UML File Information
178
            ---------------------------
179
            The source file information must be supplied as an XMI file (without diagram layout information).
180
            The supported UML authoring tools are:
181
            (a) Poseidon – v6 (and later)
182
 
183
            Source XSLT File Information
184
            ----------------------------
185
            XSL Generator:    UMLtoXSDTransformv0p9.xsl
186
            XSLT Processor:   Xalan
187
            Release:          1.0 Beta 3
188
            Date:             31st May, 2009
189
 
190
            IMS GLC Auto-generation Binding Tool-kit (I-BAT)
191
            ------------------------------------------------
192
            This file was auto-generated using the IMS GLC Binding Auto-generation Tool-kit (I-BAT).  While every
193
            attempt has been made to ensure that this tool auto-generates the files correctly, users should be aware
194
            that this is an experimental tool.  Permission is given to make use of this tool.  IMS GLC makes no
195
            claim on the materials created by third party users of this tool.  Details on how to use this tool
196
            are contained in the IMS GLC "I-BAT" Documentation available at the IMS GLC web-site.
197
 
198
            Tool Copyright:  2005-2010 (c) IMS Global Learning Consortium Inc.  All Rights Reserved.
199
        </xs:documentation>
200
    </xs:annotation>
201
 
202
        <xs:annotation>
203
        <xs:documentation>
204
            Schematron Validation Rules Information
205
            ---------------------------------------
206
            Author:         Colin Smythe
207
            Date:           5th January, 2011
208
            Version:        1.1
209
            Status:         Final Release
210
 
211
            Description:    This set of schematron rules have been created to increase the validation capability of the QTIv1.2.1 XSD.
212
                            A total of 12 rule sets have been created to ensure that:
213
                            [1]  Only valid Assessment metadata is defined;
214
                            [2]  Only valid Question types are defined in the Itemmetatadata fields;
215
                            [3]  The structure of a True/False question is correct;
216
                            [4]  The structure of a Multiple-Choice (Single Response) question is correct;
217
                            [5]  The structure of a Multiple-Choice (Multiple Response) question is correct;
218
                            [6]  The structure of a Fill In Blank question is correct;
219
                            [7]  The structure of a Pattern Match question is correct;
220
                            [8]  The structure of an Essay question is correct;
221
                            [9]  The structures of the response processing/response-label are correct;
222
                            [10] The structure of a Hint in an Item is correct;
223
                            [11] The structure of a Solution in an Item is correct;
224
                            [12] The structure of the response processing feedback structure in an Item is correct;
225
                            [13] Generic features of an Item are correctly implemented.
226
 
227
            Rule Set:       [1]  The set of rules to ensure that only valid Assessment metadata is defined.
228
                                 The rules are:
229
                                 (a) Only valid entries are defined for the Assessment metadata fieldlabel values;
230
                                 (b) Only valid entries are defined for the Assessment metadata fieldentry values for fieldlabel = 'qmd_assessmenttype';
231
                                 (c) Only valid entries are defined for the Assessment metadata fieldentry values for fieldlabel = 'qmd_scoretype';
232
                                 (d) Only valid entries are defined for the Assessment metadata fieldentry values for fieldlabel = 'qmd_feedbackpermitted';
233
                                 (e) Only valid entries are defined for the Assessment metadata fieldentry values for fieldlabel = 'qmd_hintspermitted';
234
                                 (f) Only valid entries are defined for the Assessment metadata fieldentry values for fieldlabel = 'qmd_solutionspermitted';
235
                                 (g) Only valid entries are defined for the Assessment metadata fieldentry values for fieldlabel = 'qmd_timelimit';
236
                                 (h) Only valid entries are defined for the Assessment metadata fieldentry values for fieldlabel = 'cc_allow_late_submission';
237
                                 (i) Only valid entries are defined for the Assessment metadata fieldentry values for fieldlabel = 'cc_maxattempts';
238
                                 (j) Only valid entries are defined for the Assessment metadata fieldentry values for fieldlabel = 'cc_profile';
239
                                 (k) There must be no more than one Assessment metadata field with fieldlabel='cc_profile';
240
                                 (l) There must be no more than one Assessment metadata field with fieldlabel='qmd_assessmenttype';
241
                                 (m) There must be no more than one Assessment metadata field with fieldlabel='qmd_scoretype';
242
                                 (n) There must be no more than one Assessment metadata field with fieldlabel='qmd_feedbackpermitted';
243
                                 (o) There must be no more than one Assessment metadata field with fieldlabel='qmd_hintspermitted';
244
                                 (p) There must be no more than one Assessment metadata field with fieldlabel='qmd_solutionspermitted';
245
                                 (q) There must be no more than one Assessment metadata field with fieldlabel='qmd_timelimit';
246
                                 (r) There must be no more than one Assessment metadata field with fieldlabel='cc_allow_late_submission';
247
                                 (s) There must be no more than one Assessment metadata field with fieldlabel='cc_maxattempts'.
248
 
249
                            [2]  The set of rules to ensure that only valid Question types are defined in the Itemmetatadata fields.
250
                                 The rules are:
251
                                 (a) Only valid entries are defined for the Itemmetadata fieldlabel values;
252
                                 (b) Only valid entries are defined for the Itemmetadata fieldentry values for fieldlabel = 'cc_profile';
253
                                 (c) Only valid entries are defined for the Itemmetadata fieldentry values for fieldlabel = 'cc_weighting';
254
                                 (d) Only valid entries are defined for the Itemmetadata fieldentry values for fieldlabel = 'qmd_scoringpermitted';
255
                                 (e) Only valid entries are defined for the Itemmetadata fieldentry values for fieldlabel = 'qmd_computerscored';
256
                                 (f) The Item metadata field with fieldlabel='cc_profile' must be present;
257
                                 (g) There must only be one Item metadata fields with fieldlabel='cc_profile'for each Item;
258
                                 (h) There must be no more than one Item metadata field with fieldlabel='cc_weighting'for each Item;
259
                                 (i) There must be no more than one Item metadata field with fieldlabel='qmd_scoringpermitted' for each Item;
260
                                 (j) There must be no more than one Item metadata field with fieldlabel='qmd_computerscored'for each Item.
261
 
262
                            [3]  The set of rules to ensure that the structure of a True/False question is correct.
263
                                 The rules are:
264
                                 (a) That @rcardinality='Single';
265
                                 (b) The element 'response_str' is not used;
266
                                 (c) The element 'render_fib' is not used;
267
                                 (d) That there are zero or two response labels;
268
                                 (e) That the response processing uses the correct identifiers i.e. varequal/@respident value is equal to the response_lid/@ident;
269
                                 (f) The varsubstring element must not be used.
270
 
271
                            [4]  The set of rules to ensure that the structure of a Multiple-Choice (Single Response) question is correct.
272
                                 The rules are:
273
                                 (a) That @rcardinality='Single';
274
                                 (b) The element 'response_str' is not used;
275
                                 (c) The element 'render_fib' is not used;
276
                                 (d) That there are at least three response labels;
277
                                 (e) That the response processing uses the correct identifiers i.e. varequal/@respident value is equal to the response_lid/@ident;
278
                                 (f) The varsubstring element must not be used.
279
 
280
                            [5]  The set of rules to ensure that the structure of a Multiple-Choice (Multiple Response) question is correct.
281
                                 The rules are:
282
                                 (a) That @rcardinality='Multiple';
283
                                 (b) The element 'response_str' is not used;
284
                                 (c) The element 'render_fib' is not used;
285
                                 (d) That there are at least two response labels;
286
                                 (e) That the response processing uses the correct identifiers i.e. varequal/@respident value is equal to the response_lid/@ident;
287
                                 (f) The varsubstring element must not be used..
288
 
289
                            [6]  The set of rules to ensure that the structure of a Fill-in-Blank question is correct.
290
                                 The rules are:
291
                                 (a) The element 'response_lid' is not used;
292
                                 (b) The element 'render_choice' is not used;
293
                                 (c) That the response processing uses the correct identifiers i.e. varequal/@respident value is equal to the response_str/@ident;
294
                                 (d) There is no use of the 'varsubstring' element.
295
 
296
                            [7]  The set of rules to ensure that the structure of a Pattern Match question is correct.
297
                                 The rules are:
298
                                 (a) The element 'response_lid' is not used;
299
                                 (b) The element 'render_choice' is not used;
300
                                 (c) That the response processing uses the correct identifiers i.e. varequal/@respident value is equal to the response_str/@ident.
301
 
302
                            [8]  The set of rules to ensure that the structure of an Essay question is correct.
303
                                 The rules are:
304
                                 (a) The element 'response_lid' is not used;
305
                                 (b) The element 'render_choice' is not used;
306
                                 (c) There is no use of the 'varequal' element;
307
                                 (d) There is no use of the 'varsubstring' element;
308
                                 (e) No more than a single Solution feedback can be supplied;
309
                                 (f) The fieldentry Item metadata for an Essay question with the fieldlabel='qmd_computerscored' must be set as 'No'.
310
 
311
                            [9]  The set of rules to ensure that the Response Processing/Response-Label structures are valid.
312
                                 The rules are:
313
                                 (a) There are no invalid response labels used in the 'varequal' element for T/F and MC questions.
314
 
315
                            [10] The set of rules to ensure that the structure of a Hint in an Item is correct.
316
                                 The rules are:
317
                                 (a) The element 'displayfeedback@feedbacktype=Hint' is accompanied by the @linkrefid='hint' attribute;
318
                                 (b) The element 'itemfeedback@ident=hint' is not followed by the 'solution' element;
319
                                 (c) The element 'itemfeedback@ident=hint' is not followed by the 'flow_mat' element;
320
                                 (d) If the element 'displayfeedback@feedbacktype=Hint' is used it must be accompanied by hint feedback.
321
 
322
                            [11] The set of rules to ensure that the structure of a Solution in an Item is correct.
323
                                 The rules are:
324
                                 (a) The element 'displayfeedback@feedbacktype=Solution' is accompanied by the @linkrefid='solution' attribute;
325
                                 (b) The element 'itemfeedback@ident=solution' is not followed by the 'hint' element;
326
                                 (c) The element 'itemfeedback@ident=solution' is not followed by the 'flow_mat' element;
327
                                 (d) If the element 'displayfeedback@feedbacktype=Solution' is used it must be accompanied by solution feedback.
328
 
329
                            [12] The set of rules to ensure that the general structure of the Response Processing in an Item is correct.
330
                                 The rules are:
331
                                 (a) The element 'displayfeedback@feedbacktype=Response' is not accompanied by the @linkrefid='solution' attribute;
332
                                 (b) The element 'displayfeedback@feedbacktype=Response' is not accompanied by the @linkrefid='hint' attribute;
333
                                 (c) To check that for each element 'displayfeedback@feedbacktype=Response' the corresponding 'itemfeedback' element exists;
334
                                 (d) To check that a given response processing itemfeedback identifier there is a corresponding displayfeedback trigger for that identifier.
335
 
336
                            [13] The set of rules to ensure that the general features in an Item are correct.
337
                                 The rules are:
338
                                 (a) To ensure that each Item has a unique @ident attribute.
339
        </xs:documentation>
340
        <xs:appinfo>
341
            <sch:ns uri="http://www.imsglobal.org/xsd/ims_qtiasiv1p2" prefix="asi"/>
342
            <sch:title>Schematron validation rules for the Common Cartridge v1p1 profile of QTI v1.2.1</sch:title>
343
 
344
<!-- RULE 1: Assessment Metadata Fields Validation -->
345
            <sch:pattern abstract="false" name="RULE SET 1">
346
                <sch:title>RULE SET 1: Ensure that only valid metadata is defined in the Assessment metadata fields</sch:title>
347
 
348
                <sch:rule abstract="false" context="asi:assessment/asi:qtimetadata/asi:qtimetadatafield">
349
                    <sch:assert test="asi:fieldlabel='cc_profile' or asi:fieldlabel='qmd_assessmenttype'
350
                                                                  or asi:fieldlabel='qmd_scoretype'
351
                                                                  or asi:fieldlabel='qmd_feedbackpermitted'
352
                                                                  or asi:fieldlabel='qmd_hintspermitted'
353
                                                                  or asi:fieldlabel='qmd_solutionspermitted'
354
                                                                  or asi:fieldlabel='qmd_timelimit'
355
                                                                  or asi:fieldlabel='cc_allow_late_submission'
356
                                                                  or asi:fieldlabel='cc_maxattempts'">
357
                        [RULE 1a] Invalid Assessment metadata fieldlabel value: <sch:value-of select="asi:fieldlabel"/>.
358
                    </sch:assert>
359
                </sch:rule>
360
 
361
                <sch:rule abstract="false" context="asi:assessment/asi:qtimetadata/asi:qtimetadatafield/asi:fieldlabel[.='qmd_assessmenttype']">
362
                    <sch:assert test="../asi:fieldentry='Examination'">
363
                        [RULE 1b] Invalid fieldentry Assessment metadata for the fieldlabel='qmd_assessmenttype' value: <sch:value-of select="../asi:fieldentry"/>.
364
                    </sch:assert>
365
                </sch:rule>
366
 
367
                <sch:rule abstract="false" context="asi:assessment/asi:qtimetadata/asi:qtimetadatafield/asi:fieldlabel[.='qmd_scoretype']">
368
                    <sch:assert test="../asi:fieldentry='Percentage'">
369
                        [RULE 1c] Invalid fieldentry Assessment metadata for the fieldlabel='qmd_scoretype' value: <sch:value-of select="../asi:fieldentry"/>.
370
                    </sch:assert>
371
                </sch:rule>
372
 
373
                <sch:rule abstract="false" context="asi:assessment/asi:qtimetadata/asi:qtimetadatafield/asi:fieldlabel[.='qmd_feedbackpermitted']">
374
                    <sch:assert test="../asi:fieldentry='No' or ../asi:fieldentry='Yes'">
375
                        [RULE 1d] Invalid fieldentry Assessment metadata for the fieldlabel='qmd_feedbackpermitted' value: <sch:value-of select="../asi:fieldentry"/>.
376
                    </sch:assert>
377
                </sch:rule>
378
 
379
                <sch:rule abstract="false" context="asi:assessment/asi:qtimetadata/asi:qtimetadatafield/asi:fieldlabel[.='qmd_hintspermitted']">
380
                    <sch:assert test="../asi:fieldentry='No' or ../asi:fieldentry='Yes'">
381
                        [RULE 1e] Invalid fieldentry Assessment metadata for the fieldlabel='qmd_hintspermitted' value: <sch:value-of select="../asi:fieldentry"/>.
382
                    </sch:assert>
383
                </sch:rule>
384
 
385
                <sch:rule abstract="false" context="asi:assessment/asi:qtimetadata/asi:qtimetadatafield/asi:fieldlabel[.='qmd_solutionspermitted']">
386
                    <sch:assert test="../asi:fieldentry='No' or ../asi:fieldentry='Yes'">
387
                        [RULE 1f] Invalid fieldentry Assessment metadata for the fieldlabel='qmd_solutionspermitted' value: <sch:value-of select="../asi:fieldentry"/>.
388
                    </sch:assert>
389
                </sch:rule>
390
 
391
                <sch:rule abstract="false" context="asi:assessment/asi:qtimetadata/asi:qtimetadatafield/asi:fieldlabel[.='qmd_timelimit']">
392
                    <sch:assert test="not(contains(../asi:fieldentry, '.')) and ../asi:fieldentry &gt; 0 and ../asi:fieldentry &lt; 527041">
393
                        [RULE 1g] Invalid fieldentry Assessment metadata for the fieldlabel='qmd_timelimit' i.e. not a valid integer with value: <sch:value-of select="../asi:fieldentry"/>.
394
                    </sch:assert>
395
                </sch:rule>
396
 
397
                <sch:rule abstract="false" context="asi:assessment/asi:qtimetadata/asi:qtimetadatafield/asi:fieldlabel[.='cc_allow_late_submission']">
398
                    <sch:assert test="../asi:fieldentry='No' or ../asi:fieldentry='Yes'">
399
                        [RULE 1h] Invalid fieldentry Assessment metadata for the fieldlabel='cc_allow_late_submission' value: <sch:value-of select="../asi:fieldentry"/>.
400
                    </sch:assert>
401
                </sch:rule>
402
 
403
                <sch:rule abstract="false" context="asi:assessment/asi:qtimetadata/asi:qtimetadatafield/asi:fieldlabel[.='cc_maxattempts']">
404
                    <sch:assert test="../asi:fieldentry='Examination'
405
                        or ../asi:fieldentry='1' or ../asi:fieldentry='2'
406
                        or ../asi:fieldentry='3' or ../asi:fieldentry='4'
407
                        or ../asi:fieldentry='5' or ../asi:fieldentry='unlimited'">
408
                        [RULE 1i] Invalid fieldentry Assessment metadata for the fieldlabel='cc_maxattempts' value: <sch:value-of select="../asi:fieldentry"/>.
409
                    </sch:assert>
410
                </sch:rule>
411
 
412
                <sch:rule abstract="false" context="asi:assessment/asi:qtimetadata/asi:qtimetadatafield/asi:fieldlabel[.='cc_profile']">
413
                    <sch:assert test="../asi:fieldentry='cc.exam.v0p1'">
414
                        [RULE 1j] Invalid fieldentry Assessment metadata for the fieldlabel='cc_profile' value: <sch:value-of select="../asi:fieldentry"/>.
415
                    </sch:assert>
416
                </sch:rule>
417
 
418
                <sch:rule abstract="false" context="asi:assessment/asi:qtimetadata">
419
 
420
                    <sch:assert test="count(asi:qtimetadatafield/asi:fieldlabel[.='cc_profile']) &lt; 2">
421
                        [RULE 1k] There are repeated assessment metadata fields of fieldlabel='cc_profile' with count=<sch:value-of select="count(asi:qtimetadatafield/asi:fieldlabel[.='cc_profile'])"/>.
422
                    </sch:assert>
423
 
424
                    <sch:assert test="count(asi:qtimetadatafield/asi:fieldlabel[.='qmd_assessmenttype']) &lt; 2">
425
                        [RULE 1l] There are repeated assessment metadata fields of fieldlabel='qmd_assessmenttype' with count=<sch:value-of select="count(asi:qtimetadatafield/asi:fieldlabel[.='qmd_assessmenttype'])"/>.
426
                    </sch:assert>
427
 
428
                    <sch:assert test="count(asi:qtimetadatafield/asi:fieldlabel[.='qmd_scoretype']) &lt; 2">
429
                        [RULE 1m] There are repeated assessment metadata fields of fieldlabel='qmd_scoretype' with count=<sch:value-of select="count(asi:qtimetadatafield/asi:fieldlabel[.='qmd_scoretype'])"/>.
430
                    </sch:assert>
431
 
432
                    <sch:assert test="count(asi:qtimetadatafield/asi:fieldlabel[.='qmd_feedbackpermitted']) &lt; 2">
433
                        [RULE 1n] There are repeated assessment metadata fields of fieldlabel='qmd_feedbackpermitted' with count=<sch:value-of select="count(asi:qtimetadatafield/asi:fieldlabel[.='qmd_feedbackpermitted'])"/>.
434
                    </sch:assert>
435
 
436
                    <sch:assert test="count(asi:qtimetadatafield/asi:fieldlabel[.='qmd_hintspermitted']) &lt; 2">
437
                        [RULE 1o] There are repeated assessment metadata fields of fieldlabel='qmd_hintspermitted' with count=<sch:value-of select="count(asi:qtimetadatafield/asi:fieldlabel[.='qmd_hintspermitted'])"/>.
438
                    </sch:assert>
439
 
440
                    <sch:assert test="count(asi:qtimetadatafield/asi:fieldlabel[.='qmd_solutionspermitted']) &lt; 2">
441
                        [RULE 1p] There are repeated assessment metadata fields of fieldlabel='qmd_solutionspermitted' with count=<sch:value-of select="count(asi:qtimetadatafield/asi:fieldlabel[.='qmd_solutionspermitted'])"/>.
442
                    </sch:assert>
443
 
444
                    <sch:assert test="count(asi:qtimetadatafield/asi:fieldlabel[.='qmd_timelimit']) &lt; 2">
445
                        [RULE 1q] There are repeated assessment metadata fields of fieldlabel='qmd_timelimit' with count=<sch:value-of select="count(asi:qtimetadatafield/asi:fieldlabel[.='qmd_timelimit'])"/>.
446
                    </sch:assert>
447
 
448
                    <sch:assert test="count(asi:qtimetadatafield/asi:fieldlabel[.='cc_allow_late_submission']) &lt; 2">
449
                        [RULE 1r] There are repeated assessment metadata fields of fieldlabel='cc_allow_late_submission' with count=<sch:value-of select="count(asi:qtimetadatafield/asi:fieldlabel[.='cc_allow_late_submission'])"/>.
450
                    </sch:assert>
451
 
452
                    <sch:assert test="count(asi:qtimetadatafield/asi:fieldlabel[.='cc_maxattempts']) &lt; 2">
453
                        [RULE 1s] There are repeated assessment metadata fields of fieldlabel='cc_maxattempts' with count=<sch:value-of select="count(asi:qtimetadatafield/asi:fieldlabel[.='cc_maxattempts'])"/>.
454
                    </sch:assert>
455
 
456
                </sch:rule>
457
 
458
            </sch:pattern>
459
<!-- **************************************************************************** -->
460
 
461
<!-- RULE 2: Item Metadata Fields Validation -->
462
            <sch:pattern abstract="false" name="RULE SET 2">
463
                <sch:title>RULE SET 2: Ensure that only valid metadata is defined in the Itemmetatadata fields</sch:title>
464
 
465
                <sch:rule abstract="false" context="asi:itemmetadata/asi:qtimetadata/asi:qtimetadatafield">
466
                    <sch:assert test="asi:fieldlabel='cc_profile'
467
                                      or asi:fieldlabel='cc_question_category'
468
                                      or asi:fieldlabel='cc_weighting'
469
                                      or asi:fieldlabel='qmd_scoringpermitted'
470
                                      or asi:fieldlabel='qmd_computerscored'">
471
                        [RULE 2a] Invalid Itemmetadata fieldlabel value: <sch:value-of select="../asi:fieldlabel"/>.
472
                    </sch:assert>
473
                </sch:rule>
474
 
475
                <sch:rule abstract="false" context="asi:itemmetadata/asi:qtimetadata/asi:qtimetadatafield/asi:fieldlabel[.='cc_profile']">
476
                    <sch:assert test="../asi:fieldentry='cc.multiple_choice.v0p1'
477
                                      or ../asi:fieldentry='cc.multiple_response.v0p1'
478
                                      or ../asi:fieldentry='cc.true_false.v0p1'
479
                                      or ../asi:fieldentry='cc.fib.v0p1'
480
                                      or ../asi:fieldentry='cc.pattern_match.v0p1'
481
                                      or ../asi:fieldentry='cc.essay.v0p1'">
482
                        [RULE 2b] Invalid fieldentry Question Type (fieldlabel='cc_profile') value: <sch:value-of select="../asi:fieldentry"/>.
483
                    </sch:assert>
484
                </sch:rule>
485
 
486
                <sch:rule abstract="false" context="asi:itemmetadata/asi:qtimetadata/asi:qtimetadatafield/asi:fieldlabel[.='cc_weighting']">
487
                    <sch:assert test="not(contains(../asi:fieldentry, '.')) and ../asi:fieldentry &gt; 0 and ../asi:fieldentry &lt; 100">
488
                        [RULE 2c] Invalid fieldentry Item metadata weighting for the fieldlabel='cc_weighting' i.e. not an integer in the range 1..99, with value: <sch:value-of select="../asi:fieldentry"/>.
489
                    </sch:assert>
490
                </sch:rule>
491
 
492
                <sch:rule abstract="false" context="asi:itemmetadata/asi:qtimetadata/asi:qtimetadatafield/asi:fieldlabel[.='qmd_scoringpermitted']">
493
                    <sch:assert test="../asi:fieldentry = 'Yes'">
494
                        [RULE 2d] Invalid fieldentry Item metadata for the fieldlabel='qmd_scoringpermitted' with value: <sch:value-of select="../asi:fieldentry"/>.
495
                    </sch:assert>
496
                </sch:rule>
497
 
498
                <sch:rule abstract="false" context="asi:itemmetadata/asi:qtimetadata/asi:qtimetadatafield/asi:fieldlabel[.='qmd_computerscored']">
499
                    <sch:assert test="../asi:fieldentry = 'No' or ../asi:fieldentry = 'Yes'">
500
                        [RULE 2e] Invalid fieldentry Item metadata for the fieldlabel='qmd_computerscored' with value: <sch:value-of select="../asi:fieldentry"/>.
501
                    </sch:assert>
502
                </sch:rule>
503
 
504
                <sch:rule abstract="false" context="asi:itemmetadata/asi:qtimetadata">
505
 
506
                    <sch:assert test="count(asi:qtimetadatafield/asi:fieldlabel[.='cc_profile']) > 0">
507
                        [RULE 2f] The Item metadata field with fieldlabel='cc_profile' is missing.
508
                    </sch:assert>
509
 
510
                    <sch:assert test="count(asi:qtimetadatafield/asi:fieldlabel[.='cc_profile'])=0 or count(asi:qtimetadatafield/asi:fieldlabel[.='cc_profile'])=1">
511
                        [RULE 2g] There are too many Item metadata fields with fieldlabel='cc_profile' i.e. count=<sch:value-of select="count(asi:qtimetadatafield/asi:fieldlabel[.='cc_profile'])"/>.
512
                    </sch:assert>
513
 
514
                    <sch:assert test="count(asi:qtimetadatafield/asi:fieldlabel[.='cc_weighting']) &lt; 2">
515
                        [RULE 2h] There are too many Item metadata fields with fieldlabel='cc_weighting' i.e. count=<sch:value-of select="count(asi:qtimetadatafield/asi:fieldlabel[.='cc_weighting'])"/>.
516
                    </sch:assert>
517
 
518
                    <sch:assert test="count(asi:qtimetadatafield/asi:fieldlabel[.='qmd_scoringpermitted']) &lt; 2">
519
                        [RULE 2i] There are too many Item metadata fields with fieldlabel='qmd_scoringpermitted' i.e. count=<sch:value-of select="count(asi:qtimetadatafield/asi:fieldlabel[.='qmd_scoringpermitted'])"/>.
520
                    </sch:assert>
521
 
522
                    <sch:assert test="count(asi:qtimetadatafield/asi:fieldlabel[.='qmd_computerscored']) &lt; 2">
523
                        [RULE 2j] There are too many Item metadata fields with fieldlabel='qmd_computerscored' i.e. count=<sch:value-of select="count(asi:qtimetadatafield/asi:fieldlabel[.='qmd_computerscored'])"/>.
524
                    </sch:assert>
525
 
526
                </sch:rule>
527
 
528
            </sch:pattern>
529
<!-- **************************************************************************** -->
530
 
531
<!-- RULE 3: True/False Question Structure Fields Validation -->
532
            <sch:pattern name="RULE SET 3">
533
                <sch:title>RULE SET 3: Ensure that the structure of a True/False question is correct</sch:title>
534
 
535
                <sch:rule abstract="false" context="asi:fieldentry[.='cc.true_false.v0p1']">
536
                    <sch:assert test="../../../../asi:presentation/asi:response_lid[@rcardinality='Single']">
537
                        [RULE 3a] Incorrect cardinality attribute value for the T/F question: <sch:value-of select="../../../../asi:presentation/asi:response_lid/@rcardinality"/>
538
                    </sch:assert>
539
 
540
                    <sch:assert test="count(../../../../asi:presentation/asi:response_str) = 0">
541
                        [RULE 3b] The invalid 'response_str' element has been used for a T/F question.
542
                    </sch:assert>
543
 
544
                    <sch:assert test="count(../../../../asi:presentation/asi:response_lid/asi:render_fib) = 0">
545
                        [RULE 3c] The invalid 'render_fib' element has been used for a T/F question.
546
                    </sch:assert>
547
 
548
                    <sch:assert test="count(../../../../asi:presentation/asi:response_lid/asi:render_choice/asi:response_label) = 2">
549
                        [RULE 3d] There are too many or too few response labels for the T/F question.
550
                    </sch:assert>
551
 
552
                    <sch:assert test="../../../../asi:presentation/asi:response_lid/@ident = ../../../../asi:resprocessing/asi:respcondition/asi:conditionvar/asi:varequal/@respident">
553
                        [RULE 3e] The T/F response processing Varequal respident attribute
554
                        (<sch:value-of select="../../../../asi:presentation/asi:response_lid/@ident"/>)
555
                        value is not equal to the corresonding Response_lid ident
556
                        (<sch:value-of select="../../../../asi:resprocessing/asi:respcondition/asi:conditionvar/asi:varequal/@respident"/>)
557
                        attribute for the True/False question.
558
                    </sch:assert>
559
 
560
                    <sch:assert test="count(../../../../asi:resprocessing/asi:respcondition/asi:conditionvar/asi:varsubstring) = 0">
561
                        [RULE 3f] There is an invalid use of the varsubstring element in a T/F question.
562
                    </sch:assert>
563
 
564
                </sch:rule>
565
 
566
            </sch:pattern>
567
<!-- **************************************************************************** -->
568
 
569
<!-- RULE 4: Multiple Choice-Single Response Question Structure Fields Validation -->
570
            <sch:pattern name="RULE SET 4">
571
                <sch:title>RULE SET 4: Ensure that the structure of a MC-SR question is correct</sch:title>
572
 
573
                <sch:rule abstract="false" context="asi:fieldentry[.='cc.multiple_choice.v0p1']">
574
                    <sch:assert test="../../../../asi:presentation/asi:response_lid[@rcardinality='Single']">
575
                        [RULE 4a] Incorrect cardinality attribute value for the MC-SR question: <sch:value-of select="../../../../asi:presentation/asi:response_lid/@rcardinality"/>.
576
                    </sch:assert>
577
 
578
                    <sch:assert test="count(../../../../asi:presentation/asi:response_str) = 0">
579
                        [RULE 4b] The invalid 'response_str' element has been used for a MC-SR question.
580
                    </sch:assert>
581
 
582
                    <sch:assert test="count(../../../../asi:presentation/asi:response_lid/asi:render_fib) = 0">
583
                        [RULE 4c] The invalid 'render_fib' element has been used for a MC-SR question.
584
                    </sch:assert>
585
 
586
                    <sch:assert test="count(../../../../asi:presentation/asi:response_lid/asi:render_choice/asi:response_label) > 2">
587
                        [RULE 4d] There are too too few response labels for the MC-SR question.
588
                    </sch:assert>
589
 
590
                    <sch:assert test="../../../../asi:presentation/asi:response_lid/@ident = ../../../../asi:resprocessing/asi:respcondition/asi:conditionvar/asi:varequal/@respident">
591
                        [RULE 4e] The MC-SR response processing Varequal respident attribute
592
                        (<sch:value-of select="../../../../asi:resprocessing/asi:respcondition/asi:conditionvar/asi:varequal/@respident"/>)
593
                        value is not equal to the corresonding Response_lid ident
594
                        (<sch:value-of select="../../../../asi:presentation/asi:response_lid/@ident"/>)
595
                        attribute for the Multiple Choice single response question.
596
                    </sch:assert>
597
 
598
                    <sch:assert test="count(../../../../asi:resprocessing/asi:respcondition/asi:conditionvar/descendant::asi:varsubstring) = 0">
599
                        [RULE 4f] There is an invalid use of the varsubstring element in a MC-SR question.
600
                    </sch:assert>
601
 
602
                </sch:rule>
603
 
604
            </sch:pattern>
605
<!-- **************************************************************************** -->
606
 
607
<!-- RULE 5: Multiple Choice-Multiple Response Question Structure Fields Validation -->
608
            <sch:pattern name="RULE SET 5">
609
                <sch:title>RULE SET 5: Ensure that the structure of a MC-MR question is correct</sch:title>
610
 
611
                <sch:rule abstract="false" context="asi:fieldentry[.='cc.multiple_response.v0p1']">
612
 
613
                    <sch:assert test="../../../../asi:presentation/asi:response_lid[@rcardinality='Multiple']">
614
                        [RULE 5a] Incorrect cardinality attribute value for the MC-MR question: <sch:value-of select="../../../../asi:presentation/asi:response_lid/@rcardinality"/>.
615
                    </sch:assert>
616
 
617
                    <sch:assert test="count(../../../../asi:presentation/asi:response_str) = 0">
618
                        [RULE 5b] The invalid 'response_str' element has been used for a MC-MR question.
619
                    </sch:assert>
620
 
621
                    <sch:assert test="count(../../../../asi:presentation/asi:response_lid/asi:render_fib) = 0">
622
                        [RULE 5c] The invalid 'render_fib' element has been used for a MC-MR question.
623
                    </sch:assert>
624
 
625
                    <sch:assert test="count(../../../../asi:presentation/asi:response_lid/asi:render_choice/asi:response_label) > 1">
626
                        [RULE 5d] There are too too few response labels for the MC-MR question.
627
                    </sch:assert>
628
 
629
                    <sch:assert test="../../../../asi:presentation/asi:response_lid/@ident = ../../../../asi:resprocessing/asi:respcondition/asi:conditionvar/asi:varequal/@respident or ../../../../asi:presentation/asi:response_lid/@ident = ../../../../asi:resprocessing/asi:respcondition/asi:conditionvar/asi:and/asi:varequal/@respident">
630
                        [RULE 5e] The MC-MR response processing Varequal respident attribute
631
                        (<sch:value-of select="../../../../asi:resprocessing/asi:respcondition/asi:conditionvar/asi:varequal/@respident"/>)
632
                        value is not equal to the corresonding Response_lid ident
633
                        (<sch:value-of select="../../../../asi:presentation/asi:response_lid/@ident"/>)
634
                        attribute for the Multiple Choice multiple response question.
635
                    </sch:assert>
636
 
637
                    <sch:assert test="count(../../../../asi:resprocessing/asi:respcondition/asi:conditionvar/asi:varsubstring) = 0">
638
                        [RULE 5f] There is an invalid use of the varsubstring element in a MC-MR question.
639
                    </sch:assert>
640
 
641
                </sch:rule>
642
 
643
            </sch:pattern>
644
<!-- **************************************************************************** -->
645
 
646
<!-- RULE 6: Fill-in-Blank Question Structure Fields Validation -->
647
            <sch:pattern name="RULE SET 6">
648
                <sch:title>RULE SET 6: Ensure that the structure of a FIB question is correct</sch:title>
649
 
650
                <sch:rule abstract="false" context="asi:fieldentry[.='cc.fib.v0p1']">
651
 
652
                    <sch:assert test="count(../../../../asi:presentation/asi:response_lid) = 0">
653
                        [RULE 6a] The invalid 'response_lid' element has been used for a FIB question.
654
                    </sch:assert>
655
 
656
                    <sch:assert test="count(../../../../asi:presentation/asi:response_str/asi:render_choice) = 0">
657
                        [RULE 6b] The invalid 'render_choice' element has been used for a FIB question.
658
                    </sch:assert>
659
 
660
                    <sch:assert test="../../../../asi:presentation/asi:response_str/@ident = ../../../../asi:resprocessing/asi:respcondition/asi:conditionvar/asi:varequal/@respident">
661
                        [RULE 6c] The FIB response processing Varequal respident attribute
662
                        (<sch:value-of select="../../../../asi:presentation/asi:response_str/@ident"/>)
663
                        value is not equal to the corresonding Response_str ident
664
                        (<sch:value-of select="../../../../asi:resprocessing/asi:respcondition/asi:conditionvar/asi:varequal/@respident"/>)
665
                        attribute for the FIB question.
666
                    </sch:assert>
667
 
668
                    <sch:assert test="count(../../../../asi:resprocessing/asi:respcondition/asi:conditionvar/asi:varsubstring) = 0">
669
                        [RULE 6d] There is an invalid use of the 'varsubstring' element in the FIB question.
670
                    </sch:assert>
671
 
672
                </sch:rule>
673
 
674
            </sch:pattern>
675
<!-- **************************************************************************** -->
676
 
677
<!-- RULE 7: Pattern Match Question Structure Fields Validation -->
678
            <sch:pattern name="RULE SET 7">
679
                <sch:title>RULE SET 7: Ensure that the structure of a Pattern Match question is correct</sch:title>
680
 
681
                <sch:rule abstract="false" context="asi:fieldentry[.='cc.pattern_match.v0p1']">
682
 
683
                    <sch:assert test="count(../../../../asi:presentation/asi:response_lid) = 0">
684
                        [RULE 7a] The invalid 'response_lid' element has been used for a Pattern Match question.
685
                    </sch:assert>
686
 
687
                    <sch:assert test="count(../../../../asi:presentation/asi:response_str/asi:render_choice) = 0">
688
                        [RULE 7b] The invalid 'render_choice' element has been used for a Pattern Match question.
689
                    </sch:assert>
690
 
691
                    <sch:assert test="../../../../asi:presentation/asi:response_str/@ident = ../../../../asi:resprocessing/asi:respcondition/asi:conditionvar/asi:varequal/@respident">
692
                        [RULE 7c] The FIB response processing Varequal respident attribute
693
                        (<sch:value-of select="../../../../asi:presentation/asi:response_str/@ident"/>)
694
                        value is not equal to the corresonding Response_str ident
695
                        (<sch:value-of select="../../../../asi:resprocessing/asi:respcondition/asi:conditionvar/asi:varequal/@respident"/>)
696
                        attribute for the Pattern Match question.
697
                    </sch:assert>
698
 
699
                </sch:rule>
700
 
701
            </sch:pattern>
702
<!-- **************************************************************************** -->
703
 
704
<!-- RULE 8: Essay Question Structure Fields Validation -->
705
            <sch:pattern name="RULE SET 8">
706
                <sch:title>RULE SET 8: Ensure that the structure of a Essay question is correct</sch:title>
707
 
708
                <sch:rule abstract="false" context="asi:fieldentry[.='cc.essay.v0p1']">
709
 
710
                    <sch:assert test="count(../../../../asi:presentation/asi:response_lid) = 0">
711
                        [RULE 8a] The invalid 'response_lid' element has been used for an Essay question.
712
                    </sch:assert>
713
 
714
                    <sch:assert test="count(../../../../asi:presentation/asi:response_str/asi:render_choice) = 0">
715
                        [RULE 8b] The invalid 'render_choice' element has been used for an Essay question.
716
                    </sch:assert>
717
 
718
                    <sch:assert test="count(../../../../asi:resprocessing/asi:respcondition/asi:conditionvar/descendant::asi:varequal) = 0">
719
                        [RULE 8c] There is an invalid use of the 'varequal' element in an Essay question.
720
                    </sch:assert>
721
 
722
                    <sch:assert test="count(../../../../asi:resprocessing/asi:respcondition/asi:conditionvar/asi:varsubstring) = 0">
723
                        [RULE 8d] There is an invalid use of the 'varsubstring' element in an Essay question.
724
                    </sch:assert>
725
 
726
                    <sch:assert test="count(../../../../asi:itemfeedback/asi:solution) &lt; 2">
727
                        [RULE 8e] Too many Solution feedback structures are supplied.
728
                    </sch:assert>
729
 
730
                    <sch:assert test="../../../asi:qtimetadata/asi:qtimetadatafield/asi:fieldlabel='qmd_computerscored' and ../../../asi:qtimetadata/asi:qtimetadatafield/asi:fieldentry = 'No'">
731
                        [RULE 8f] Invalid fieldentry Item metadata for an Essay question with the fieldlabel='qmd_computerscored' with value: <sch:value-of select="../../../asi:qtimetadata/asi:qtimetadatafield/asi:fieldlabel[.='qmd_computerscored']/../asi:fieldentry"/>.
732
                    </sch:assert>
733
 
734
                </sch:rule>
735
 
736
            </sch:pattern>
737
<!-- **************************************************************************** -->
738
 
739
<!-- RULE 9: General Response Processing/Response-Label structure validation -->
740
<!--
741
            <sch:pattern name="RULE SET 9">
742
                <sch:title>RULE SET 9: Ensure that the response processing operates on valid response labels</sch:title>
743
 
744
                <sch:rule abstract="false" context="asi:item">
745
 
746
                    <sch:let name="ResponseLidIdent" value="asi:resprocessing/asi:respcondition/asi:conditionvar/asi:varequal/@respident"/>
747
                    <sch:let name="VarEqualValue" value="asi:resprocessing/asi:respcondition/asi:conditionvar/asi:varequal[@respident=$ResponseLidIdent]"/>
748
                    <sch:assert test="count(asi:presentation/asi:response_lid[@ident = $ResponseLidIdent]/asi:render_choice/asi:response_label[@ident=$VarEqualValue]) = count(asi:presentation/asi:response_lid[@ident = $ResponseLidIdent]/asi:render_choice/asi:response_label)">
749
                        [RULE 9a] At least <sch:value-of select="count(asi:presentation/asi:response_lid[@ident = $ResponseLidIdent]/asi:render_choice/asi:response_label)-count(asi:presentation/asi:response_lid[@ident = $ResponseLidIdent]/asi:render_choice/asi:response_label[@ident=$VarEqualValue])"/> of the varequal response label values (<sch:value-of select="$VarEqualValue"/>) is/are invalid in a T/F or MC question.
750
                    </sch:assert>
751
 
752
                </sch:rule>
753
 
754
            </sch:pattern>
755
-->
756
<!-- **************************************************************************** -->
757
 
758
<!-- RULE 10: Hint structure validation -->
759
            <sch:pattern name="RULE SET 10">
760
                <sch:title>RULE SET 10: Ensure that the structure of a Hint in an Item is correct</sch:title>
761
 
762
                <sch:rule abstract="false" context="asi:item">
763
 
764
                    <sch:assert test="count(asi:resprocessing/asi:respcondition/asi:displayfeedback[@feedbacktype='Solution' and @linkrefid='hint']) = 0">
765
                        [RULE 10a] The displayfeedback@feedbacktype='Solution' has been used to identify a Hint.
766
                    </sch:assert>
767
 
768
                    <sch:assert test="count(asi:itemfeedback[@ident='hint']/asi:solution)=0">
769
                        [RULE 10b] The itemfeedback@ident='hint' has been used to identify a Solution.
770
                    </sch:assert>
771
 
772
                    <sch:assert test="count(asi:itemfeedback[@ident='hint']/asi:flow_mat)=0">
773
                        [RULE 10c] The itemfeedback@ident='hint' has been used to identify Response feedback.
774
                    </sch:assert>
775
 
776
                </sch:rule>
777
 
778
                <sch:rule abstract="false" context="asi:item/asi:resprocessing/asi:respcondition/asi:displayfeedback[@feedbacktype='Hint']">
779
                    <sch:assert test="count(../../../asi:itemfeedback[@ident='hint']) = 1">
780
                        [RULE 10d] A displayfeedback[@feedbacktype='Hint'] trigger has no accompanying hint feedback.
781
                    </sch:assert>
782
                </sch:rule>
783
 
784
            </sch:pattern>
785
<!-- **************************************************************************** -->
786
 
787
<!-- RULE 11: Solution structure validation (in this Rule any type of Item is permitted support for solutions) -->
788
            <sch:pattern name="RULE SET 11">
789
                <sch:title>RULE SET 11: Ensure that the structure of a Solution in an Item is correct</sch:title>
790
 
791
                <sch:rule abstract="false" context="asi:item">
792
 
793
                    <sch:assert test="count(asi:resprocessing/asi:respcondition/asi:displayfeedback[@feedbacktype='Hint' and @linkrefid='solution']) = 0">
794
                        [RULE 11a] The displayfeedback@feedbacktype='Hint' has been used to identify a Solution.
795
                    </sch:assert>
796
 
797
                    <sch:assert test="count(asi:itemfeedback[@ident='solution']/asi:hint) = 0">
798
                        [RULE 11b] The itemfeedback@ident='solution' has been used to identify a Hint.
799
                    </sch:assert>
800
 
801
                    <sch:assert test="count(asi:itemfeedback[@ident='solution']/asi:flow_mat) = 0">
802
                        [RULE 11c] The itemfeedback@ident='solution' has been used to identify Response feedback.
803
                    </sch:assert>
804
 
805
                </sch:rule>
806
 
807
                <sch:rule abstract="false" context="asi:item/asi:resprocessing/asi:respcondition/asi:displayfeedback[@feedbacktype='Solution']">
808
                    <sch:assert test="count(../../../asi:itemfeedback[@ident='solution']) = 1">
809
                        [RULE 11d] A displayfeedback[@feedbacktype='Solution'] trigger has no accompanying solution feedback.
810
                    </sch:assert>
811
                </sch:rule>
812
 
813
            </sch:pattern>
814
<!-- **************************************************************************** -->
815
 
816
<!-- RULE 12: General Response Processing Feedback structure validation -->
817
            <sch:pattern name="RULE SET 12">
818
                <sch:title>RULE SET 12: Ensure that the structure of the response processing feedback structure in an Item is correct</sch:title>
819
 
820
                <sch:rule abstract="false" context="asi:item">
821
 
822
                    <sch:assert test="count(asi:resprocessing/asi:respcondition/asi:displayfeedback[@feedbacktype='Response' and @linkrefid='solution']) = 0">
823
                        [RULE 12a] The displayfeedback@feedbacktype='Response' has been used to identify a Solution.
824
                    </sch:assert>
825
 
826
                    <sch:assert test="count(asi:resprocessing/asi:respcondition/asi:displayfeedback[@feedbacktype='Response' and @linkrefid='hint']) = 0">
827
                        [RULE 12b] The displayfeedback@feedbacktype='Response' has been used to identify a Hint.
828
                    </sch:assert>
829
 
830
                </sch:rule>
831
 
832
                <sch:rule abstract="false" context="asi:item/asi:resprocessing/asi:respcondition/asi:displayfeedback[@feedbacktype='Response']">
833
                    <sch:assert test="../../../asi:itemfeedback/@ident = @linkrefid">
834
                        [RULE 12c] For the given displayfeedback identifier (<sch:value-of select="@linkrefid"/>) there is no itemfeedback with the correct identifier (<sch:value-of select="../../../asi:itemfeedback/@ident"/>).
835
                    </sch:assert>
836
                </sch:rule>
837
 
838
                <sch:rule abstract="false" context="asi:item/asi:itemfeedback/asi:flow_mat">
839
                    <sch:assert test="../@ident = ../../asi:resprocessing/asi:respcondition/asi:displayfeedback[@feedbacktype='Response']/@linkrefid">
840
                        [RULE 12d] For the given response processing itemfeedback identifier (<sch:value-of select="../@ident"/>) there is no displayfeedback trigger with the correct identifier (<sch:value-of select="../../asi:resprocessing/asi:respcondition/asi:displayfeedback[@feedbacktype='Response']/@linkrefid"/>).
841
                    </sch:assert>
842
                </sch:rule>
843
 
844
            </sch:pattern>
845
<!-- **************************************************************************** -->
846
 
847
<!-- RULE 13: The generic features of an Item must be correct -->
848
            <sch:pattern name="RULE SET 13">
849
                <sch:title>RULE SET 13: Ensure that the generic features of an Item are correct</sch:title>
850
 
851
                <sch:rule abstract="false" context="asi:item">
852
 
853
                    <sch:assert test="not(@ident=preceding-sibling::asi:item/@ident)">
854
                        [RULE 13a] There are Items that have common identifiers: <sch:value-of select="@ident"/>.
855
                    </sch:assert>
856
 
857
                </sch:rule>
858
 
859
            </sch:pattern>
860
<!-- **************************************************************************** -->
861
 
862
        </xs:appinfo>
863
    </xs:annotation>
864
 
865
    <!-- Generate Global Attributes *********************************************************************** -->
866
 
867
    <!-- ================================================================================================== -->
868
 
869
    <!-- Generate Namespaced extension Group  ************************************************************* -->
870
 
871
    <!-- ================================================================================================== -->
872
 
873
    <!-- Generate Special DataTypes  ********************************************************************** -->
874
 
875
    <xs:complexType name="EmptyPrimitiveTypeType">
876
        <xs:complexContent>
877
            <xs:restriction base="xs:anyType"/>
878
        </xs:complexContent>
879
    </xs:complexType>
880
 
881
    <!-- ================================================================================================== -->
882
 
883
    <!-- Generate the enumerated simpleType declarations ************************************************** -->
884
 
885
    <!-- ================================================================================================== -->
886
 
887
    <!-- Generate the simpleType elements based IMS data-types  ******************************************* -->
888
 
889
    <xs:element name="matbreak" type="EmptyPrimitiveTypeType"/>
890
 
891
    <xs:element name="other" type="EmptyPrimitiveTypeType"/>
892
 
893
    <!-- ================================================================================================== -->
894
 
895
    <!-- Generate the derived data-type elements based upon simpleType ************************************ -->
896
 
897
    <!-- ================================================================================================== -->
898
 
899
    <!-- Generate the derived data-type elements based upon derived simpleType **************************** -->
900
 
901
    <!-- ================================================================================================== -->
902
 
903
    <!-- Generate the data-type ComplexTypes ************************************************************** -->
904
 
905
    <xs:complexType name="questestinteropType">
906
        <xs:annotation>
907
            <xs:documentation source="umlcommentbox">
908
                The root structure can consist of either:
909
 
910
                * A single object bank;
911
                * An assessment;
912
                * A set of item(s);
913
                * A set of section(s);
914
                * Any combination of items and sections.
915
 
916
                As the root this is mandatory and can
917
                occur once.
918
 
919
                Common Cartridge Profile
920
 
921
                A Commn Cartridge is allowed to contain
922
                only an objectbank or an assessement.
923
            </xs:documentation>
924
        </xs:annotation>
925
        <xs:sequence>
926
            <xs:choice minOccurs = "1" maxOccurs = "1">
927
                <xs:element name="objectbank" type="objectbankType" minOccurs = "1" maxOccurs = "1"/>
928
                <xs:element name="assessment" type="assessmentType" minOccurs = "1" maxOccurs = "1"/>
929
            </xs:choice>
930
        </xs:sequence>
931
    </xs:complexType>
932
 
933
    <xs:complexType name="assessmentType">
934
        <xs:annotation>
935
            <xs:documentation source="umlcommentbox">
936
                QTI General
937
 
938
                An Assessment object is the logical construction of the test.  An Assessment must
939
                contain at least one Section which in turn will contain Items and/or Sections.  An
940
                Assessment must eventually be constructed from a set of Items i.e. questions
941
                that are to be offered in the test.  An Assessment object contains all of the information
942
                to make the use of individual Items meaningful i.e. apart from the Sections the object
943
                includes the relationships between the Sections, the group evaluation processing and
944
                the corresponding feedback.
945
 
946
                Common Cartridge Profile
947
 
948
                The Assessment must consist of only one Section.  The only other permitted attributes
949
                are the mandatory identifier and title.  Optional language, metadata, rubric and
950
                presentation_material is also supported.
951
            </xs:documentation>
952
        </xs:annotation>
953
        <xs:sequence>
954
            <xs:element name="qtimetadata" type="qtimetadataType" minOccurs = "0" maxOccurs = "1"/>
955
            <xs:element name="rubric" type="rubricType" minOccurs = "0" maxOccurs = "1"/>
956
            <xs:element name="presentation_material" type="presentation_materialType" minOccurs = "0" maxOccurs = "1"/>
957
            <xs:element name="section" type="sectionType" minOccurs = "1" maxOccurs = "1"/>
958
        </xs:sequence>
959
        <xs:attribute name="ident" use="required" type="xs:string"/>
960
        <xs:attribute name="title" use="required" type="xs:string"/>
961
        <xs:attribute ref="xml:lang" use="optional"/>
962
    </xs:complexType>
963
 
964
    <xs:complexType name="objectbankType">
965
        <xs:annotation>
966
            <xs:documentation source="umlcommentbox">
967
                QTI General
968
 
969
                An object bank is an unordered set of items and sections.  It is recommended
970
                that there is a metadata description for the object bank as a whole.  The object
971
                bank should have a globally unique identifier.
972
 
973
                Common Cartridge Profile
974
 
975
                In the Common Cartridge the object-bank can only contain Items.  Meta-data
976
                support is available but the profile has no mandated entries.
977
            </xs:documentation>
978
        </xs:annotation>
979
        <xs:sequence>
980
            <xs:element name="qtimetadata" type="qtimetadataType" minOccurs = "0" maxOccurs = "1"/>
981
            <xs:element name="item" type="itemType" minOccurs = "1" maxOccurs = "unbounded"/>
982
        </xs:sequence>
983
        <xs:attribute name="ident" use="required" type="xs:string"/>
984
    </xs:complexType>
985
 
986
    <xs:complexType name="sectionType">
987
        <xs:annotation>
988
            <xs:documentation source="umlcommentbox">
989
                QTI General
990
 
991
                A Section is the core grouping concept within QTI.  A Section consists of one or more Items or Sections (or
992
                references to Items and Sections).  In general, the objects contained within a Secton will have some relationship
993
                either in terms of content or content delivery.  The Section data structure is used to define arbitrarily complex
994
                hierarchical section and item data structures.  It may contain meta-data, objectives, rubric control switches,
995
                assessment-level processing, feedback and selection and sequencing information for sections and items.
996
 
997
                Common Cartridge Profile
998
 
999
                In Common Cartridge the Section can only contain a list of Items.  No metadata is permitted.  The identifier is
1000
                mandatory but the title and language are optional.
1001
 
1002
            </xs:documentation>
1003
        </xs:annotation>
1004
        <xs:sequence>
1005
            <xs:element name="item" type="itemType" minOccurs = "1" maxOccurs = "unbounded"/>
1006
        </xs:sequence>
1007
        <xs:attribute name="ident" use="required" type="xs:string"/>
1008
        <xs:attribute name="title" use="optional" type="xs:string"/>
1009
        <xs:attribute ref="xml:lang" use="optional"/>
1010
    </xs:complexType>
1011
 
1012
    <xs:complexType name="itemType">
1013
        <xs:annotation>
1014
            <xs:documentation source="umlcommentbox">
1015
                An Item the smallest exchangeable object within QTI-XML.  An Item is more than a
1016
                ‘Question’ in that it contains the ‘Question’, the presentation/rendering instructions,
1017
                the response processing to be applied to the participant’s response(s), the feedback
1018
                that may be presented (including hints and solutions) and the meta-data describing
1019
                the Item.
1020
            </xs:documentation>
1021
        </xs:annotation>
1022
        <xs:sequence>
1023
            <xs:element name="itemmetadata" type="itemmetadataType" minOccurs = "0" maxOccurs = "1"/>
1024
            <xs:element name="presentation" type="presentationType" minOccurs = "0" maxOccurs = "1"/>
1025
            <xs:element name="resprocessing" type="resprocessingType" minOccurs = "0" maxOccurs = "unbounded"/>
1026
            <xs:element name="itemfeedback" type="itemfeedbackType" minOccurs = "0" maxOccurs = "unbounded"/>
1027
        </xs:sequence>
1028
        <xs:attribute name="ident" use="required" type="xs:string"/>
1029
        <xs:attribute name="title" use="optional" type="xs:string"/>
1030
        <xs:attribute ref="xml:lang" use="optional"/>
1031
    </xs:complexType>
1032
 
1033
    <xs:complexType name="itemmetadataType">
1034
        <xs:annotation>
1035
            <xs:documentation source="umlcommentbox">
1036
                Contains all of the QTI-specific metada-data
1037
                to be applied to the Item.  This meta-data can
1038
                consist of either entries defined using an
1039
                external vocabulary or the individually named
1040
                entries.  Usage of the contained attributes are
1041
                deprecated apart from the 'qtimetadata' attribute.
1042
            </xs:documentation>
1043
        </xs:annotation>
1044
        <xs:sequence>
1045
            <xs:element name="qtimetadata" type="qtimetadataType" minOccurs = "1" maxOccurs = "unbounded"/>
1046
        </xs:sequence>
1047
    </xs:complexType>
1048
 
1049
    <xs:complexType name="presentationType">
1050
        <xs:annotation>
1051
            <xs:documentation source="umlcommentbox">
1052
                Contains all of the instructions for the presentation of the question
1053
                during an evaluation.  This information includes the actual material
1054
                to be presented.  The labels for the possible responses are also
1055
                 identified and these are used by the response processing element
1056
                defined elsewhere in the Item.
1057
            </xs:documentation>
1058
        </xs:annotation>
1059
        <xs:sequence>
1060
            <xs:choice minOccurs = "1" maxOccurs = "1">
1061
                <xs:element name="flow" type="flowType" minOccurs = "1" maxOccurs = "1"/>
1062
                <xs:choice minOccurs = "1" maxOccurs = "unbounded">
1063
                    <xs:element name="material" type="materialType" minOccurs = "1" maxOccurs = "1"/>
1064
                    <xs:element name="response_lid" type="response_lidType" minOccurs = "1" maxOccurs = "1"/>
1065
                    <xs:element name="response_str" type="response_strType" minOccurs = "1" maxOccurs = "1"/>
1066
                </xs:choice>
1067
            </xs:choice>
1068
        </xs:sequence>
1069
        <xs:attribute name="label" use="optional" type="xs:string"/>
1070
        <xs:attribute ref="xml:lang" use="optional"/>
1071
        <xs:attribute name="x0" use="optional" type="xs:string"/>
1072
        <xs:attribute name="y0" use="optional" type="xs:string"/>
1073
        <xs:attribute name="width" use="optional" type="xs:string"/>
1074
        <xs:attribute name="height" use="optional" type="xs:string"/>
1075
    </xs:complexType>
1076
 
1077
    <xs:complexType name="resprocessingType">
1078
        <xs:annotation>
1079
            <xs:documentation source="umlcommentbox">
1080
                This contains all of the instructions for the response
1081
                processing.  This includes the scoring variables to contain
1082
                the associated scores and the set of response condition
1083
                tests that are to be applied to the received user response.
1084
            </xs:documentation>
1085
        </xs:annotation>
1086
        <xs:sequence>
1087
            <xs:element name="outcomes" type="outcomesType" minOccurs = "1" maxOccurs = "1"/>
1088
            <xs:choice minOccurs = "1" maxOccurs = "unbounded">
1089
                <xs:element name="respcondition" type="respconditionType" minOccurs = "1" maxOccurs = "1"/>
1090
            </xs:choice>
1091
        </xs:sequence>
1092
    </xs:complexType>
1093
 
1094
    <xs:complexType name="outcomesType">
1095
        <xs:annotation>
1096
            <xs:documentation source="umlcommentbox">
1097
                Contains all of the variable declarations that are to be
1098
                made available to the scoring algorithm.  Each variable
1099
                is declared using the 'decvar' structure apart from the
1100
                default variable called ‘SCORE’ that is an integer and
1101
                has a default value of zero (0).
1102
 
1103
                Common Cartridge Profile
1104
 
1105
                A single variable is permitted.  This is "SCORE".
1106
            </xs:documentation>
1107
        </xs:annotation>
1108
        <xs:sequence>
1109
            <xs:element name="decvar" type="decvarType" minOccurs = "1" maxOccurs = "1"/>
1110
        </xs:sequence>
1111
    </xs:complexType>
1112
 
1113
    <xs:complexType name="itemfeedbackType">
1114
        <xs:annotation>
1115
            <xs:documentation source="umlcommentbox">
1116
                The container for the feedback that is to be presented as a result of the
1117
                user’s responses.  The feedback can include hints and solutions and
1118
                both of these can be revealed in a variety of different ways.
1119
            </xs:documentation>
1120
        </xs:annotation>
1121
        <xs:sequence>
1122
            <xs:choice minOccurs = "1" maxOccurs = "unbounded">
1123
                <xs:choice minOccurs = "1" maxOccurs = "1">
1124
                    <xs:element name="flow_mat" type="flow_matType" minOccurs = "1" maxOccurs = "1"/>
1125
                    <xs:element name="material" type="materialType" minOccurs = "1" maxOccurs = "1"/>
1126
                </xs:choice>
1127
                <xs:element name="solution" type="solutionType" minOccurs = "1" maxOccurs = "1"/>
1128
                <xs:element name="hint" type="hintType" minOccurs = "1" maxOccurs = "1"/>
1129
            </xs:choice>
1130
        </xs:sequence>
1131
        <xs:attribute name="ident" use="required" type="xs:string"/>
1132
        <xs:attribute name="title" use="optional" type="xs:string"/>
1133
    </xs:complexType>
1134
 
1135
    <xs:complexType name="respconditionType">
1136
        <xs:annotation>
1137
            <xs:documentation source="umlcommentbox">
1138
                Contains the actual test to be applied to the user responses
1139
                to determine their correctness or otherwise.  Each 'respcondition'
1140
                contains an actual test, the assignment of a value to the associate
1141
                scoring variables and the identification of the feedback to be
1142
                associated with the test.
1143
            </xs:documentation>
1144
        </xs:annotation>
1145
        <xs:sequence>
1146
            <xs:element name="conditionvar" type="conditionvarType" minOccurs = "1" maxOccurs = "1"/>
1147
            <xs:element name="setvar" type="setvarType" minOccurs = "0" maxOccurs = "unbounded"/>
1148
            <xs:element name="displayfeedback" type="displayfeedbackType" minOccurs = "0" maxOccurs = "unbounded"/>
1149
        </xs:sequence>
1150
        <xs:attribute name="title" use="optional" type="xs:string"/>
1151
        <xs:attribute name="continue" use="optional" default="No">
1152
            <xs:simpleType>
1153
                <xs:restriction base="xs:string">
1154
                    <xs:enumeration value="Yes"/>
1155
                    <xs:enumeration value="No"/>
1156
                </xs:restriction>
1157
            </xs:simpleType>
1158
        </xs:attribute>
1159
    </xs:complexType>
1160
 
1161
    <xs:complexType name="presentation_materialType">
1162
        <xs:annotation>
1163
            <xs:documentation source="umlcommentbox">
1164
                This is the information that is to be presented to set the context for the
1165
                contained objects.  This can be used to contain question-based material
1166
                that is common to all of the child objects.  This is used in Assessment and
1167
                Section objects.
1168
            </xs:documentation>
1169
            <xs:documentation source="umlcommentbox">
1170
                This is the information that is used to describe the solution.
1171
            </xs:documentation>
1172
        </xs:annotation>
1173
        <xs:sequence>
1174
            <xs:element name="flow_mat" type="flow_matType" minOccurs = "1" maxOccurs = "unbounded"/>
1175
        </xs:sequence>
1176
    </xs:complexType>
1177
 
1178
    <xs:complexType name="flow_matType">
1179
        <xs:annotation>
1180
            <xs:documentation source="umlcommentbox">
1181
                This allows the materials to be displayed to the users to be grouped together
1182
                using flows.  The manner in which these flows are handled is dependent upon
1183
                the display-engine.
1184
            </xs:documentation>
1185
        </xs:annotation>
1186
        <xs:sequence>
1187
            <xs:choice minOccurs = "1" maxOccurs = "unbounded">
1188
                <xs:element name="flow_mat" type="flow_matType" minOccurs = "1" maxOccurs = "1"/>
1189
                <xs:element name="material" type="materialType" minOccurs = "1" maxOccurs = "1"/>
1190
                <xs:element name="material_ref" type="material_refType" minOccurs = "1" maxOccurs = "1"/>
1191
            </xs:choice>
1192
        </xs:sequence>
1193
        <xs:attribute name="class" use="optional" default="Block" type="xs:string"/>
1194
    </xs:complexType>
1195
 
1196
    <xs:complexType name="materialType">
1197
        <xs:annotation>
1198
            <xs:documentation source="umlcommentbox">
1199
                This is the container for any content that is to be displayed by the question-engine.
1200
                The supported content types are text (emphasised or not), images, audio, video,
1201
                application and applet.  The content can be internally referenced to avoid the need
1202
                for duplicate copies.  Alternative information can be defined – this is used if the
1203
                primary content cannot be displayed.
1204
 
1205
                Common Cartridge Profile
1206
 
1207
                Only the 'mattext', 'matref' and 'matbreak' types are permitted.
1208
            </xs:documentation>
1209
        </xs:annotation>
1210
        <xs:sequence>
1211
            <xs:choice minOccurs = "1" maxOccurs = "unbounded">
1212
                <xs:element name="mattext" type="mattextType" minOccurs = "1" maxOccurs = "1"/>
1213
                <xs:element name="matref" type="matrefType" minOccurs = "1" maxOccurs = "1"/>
1214
                <xs:element ref="matbreak" minOccurs = "1" maxOccurs = "1"/>
1215
            </xs:choice>
1216
            <xs:element name="altmaterial" type="altmaterialType" minOccurs = "0" maxOccurs = "unbounded"/>
1217
        </xs:sequence>
1218
        <xs:attribute name="label" use="optional" type="xs:string"/>
1219
        <xs:attribute ref="xml:lang" use="optional"/>
1220
    </xs:complexType>
1221
 
1222
    <xs:complexType name="altmaterialType">
1223
        <xs:annotation>
1224
            <xs:documentation source="umlcommentbox">
1225
                This is the container for alternative content.  This content is to be
1226
                displayed if, for whatever reason, the primary content cannot be
1227
                rendered.  Alternative language implementations of the host 'material'
1228
                element are also supported using this structure.
1229
            </xs:documentation>
1230
        </xs:annotation>
1231
        <xs:sequence>
1232
            <xs:choice minOccurs = "1" maxOccurs = "unbounded">
1233
                <xs:element name="mattext" type="mattextType" minOccurs = "1" maxOccurs = "1"/>
1234
                <xs:element name="matref" type="matrefType" minOccurs = "1" maxOccurs = "1"/>
1235
                <xs:element ref="matbreak" minOccurs = "1" maxOccurs = "1"/>
1236
            </xs:choice>
1237
        </xs:sequence>
1238
        <xs:attribute ref="xml:lang" use="optional"/>
1239
    </xs:complexType>
1240
 
1241
    <xs:complexType name="flowType">
1242
        <xs:annotation>
1243
            <xs:documentation source="umlcommentbox">
1244
                This is the container for all of the instructions for the presentation with flow
1245
                blocking of the question during a test.  This information includes the actual
1246
                material to be presented.  The labels for the possible responses are also
1247
                identified and these are used by the response processing element defined
1248
                elsewhere in the Item.
1249
            </xs:documentation>
1250
        </xs:annotation>
1251
        <xs:sequence>
1252
            <xs:choice minOccurs = "1" maxOccurs = "unbounded">
1253
                <xs:element name="flow" type="flowType" minOccurs = "1" maxOccurs = "1"/>
1254
                <xs:element name="material" type="materialType" minOccurs = "1" maxOccurs = "1"/>
1255
                <xs:element name="material_ref" type="material_refType" minOccurs = "1" maxOccurs = "1"/>
1256
                <xs:element name="response_lid" type="response_lidType" minOccurs = "1" maxOccurs = "1"/>
1257
                <xs:element name="response_str" type="response_strType" minOccurs = "1" maxOccurs = "1"/>
1258
            </xs:choice>
1259
        </xs:sequence>
1260
        <xs:attribute name="class" use="optional" default="Block" type="xs:string"/>
1261
    </xs:complexType>
1262
 
1263
    <xs:complexType name="render_choiceType">
1264
        <xs:annotation>
1265
            <xs:documentation source="umlcommentbox">
1266
                Contains the instructions for the question-engine to render the question
1267
                using a classical multiple choice format.  The number of possible responses
1268
                is determined by the 'response_label' structures contained.  Both flowed and
1269
                non-flowed formats are supported
1270
            </xs:documentation>
1271
        </xs:annotation>
1272
        <xs:sequence>
1273
            <xs:choice minOccurs = "0" maxOccurs = "unbounded">
1274
                <xs:element name="material" type="materialType" minOccurs = "1" maxOccurs = "1"/>
1275
                <xs:element name="material_ref" type="material_refType" minOccurs = "1" maxOccurs = "1"/>
1276
                <xs:element name="response_label" type="response_labelType" minOccurs = "1" maxOccurs = "1"/>
1277
                <xs:element name="flow_label" type="flow_labelType" minOccurs = "1" maxOccurs = "1"/>
1278
            </xs:choice>
1279
        </xs:sequence>
1280
        <xs:attribute name="shuffle" use="optional" default="No">
1281
            <xs:simpleType>
1282
                <xs:restriction base="xs:string">
1283
                    <xs:enumeration value="Yes"/>
1284
                    <xs:enumeration value="No"/>
1285
                </xs:restriction>
1286
            </xs:simpleType>
1287
        </xs:attribute>
1288
        <xs:attribute name="minnumber" use="optional" type="xs:string"/>
1289
        <xs:attribute name="maxnumber" use="optional" type="xs:string"/>
1290
    </xs:complexType>
1291
 
1292
    <xs:complexType name="render_fibType">
1293
        <xs:annotation>
1294
            <xs:documentation source="umlcommentbox">
1295
                Contains the instructions for the question-engine to render the question
1296
                using a classical fill-in blank format.  The number of possible responses
1297
                is determined by the 'response_label' structures contained.  Both flowed
1298
                and non-flowed formats are supported.
1299
            </xs:documentation>
1300
        </xs:annotation>
1301
        <xs:sequence>
1302
            <xs:choice minOccurs = "0" maxOccurs = "unbounded">
1303
                <xs:element name="material" type="materialType" minOccurs = "1" maxOccurs = "1"/>
1304
                <xs:element name="material_ref" type="material_refType" minOccurs = "1" maxOccurs = "1"/>
1305
                <xs:element name="response_label" type="response_labelType" minOccurs = "1" maxOccurs = "1"/>
1306
                <xs:element name="flow_label" type="flow_labelType" minOccurs = "1" maxOccurs = "1"/>
1307
            </xs:choice>
1308
        </xs:sequence>
1309
        <xs:attribute name="encoding" use="optional" default="utf-8" type="xs:string"/>
1310
        <xs:attribute name="charset" use="optional" default="ascii-us" type="xs:string"/>
1311
        <xs:attribute name="rows" use="optional" type="xs:string"/>
1312
        <xs:attribute name="columns" use="optional" type="xs:string"/>
1313
        <xs:attribute name="maxchars" use="optional" type="xs:string"/>
1314
        <xs:attribute name="minnumber" use="optional" type="xs:string"/>
1315
        <xs:attribute name="maxnumber" use="optional" type="xs:string"/>
1316
        <xs:attribute name="prompt" use="optional" default="Box">
1317
            <xs:simpleType>
1318
                <xs:restriction base="xs:string">
1319
                    <xs:enumeration value="Asterisk"/>
1320
                    <xs:enumeration value="Box"/>
1321
                    <xs:enumeration value="Dashline"/>
1322
                    <xs:enumeration value="Underline"/>
1323
                </xs:restriction>
1324
            </xs:simpleType>
1325
        </xs:attribute>
1326
        <xs:attribute name="fibtype" use="optional" default="String">
1327
            <xs:simpleType>
1328
                <xs:restriction base="xs:string">
1329
                    <xs:enumeration value="Decimal"/>
1330
                    <xs:enumeration value="Integer"/>
1331
                    <xs:enumeration value="Scientific"/>
1332
                    <xs:enumeration value="String"/>
1333
                </xs:restriction>
1334
            </xs:simpleType>
1335
        </xs:attribute>
1336
    </xs:complexType>
1337
 
1338
    <xs:complexType name="qtimetadataType">
1339
        <xs:annotation>
1340
            <xs:documentation source="umlcommentbox">
1341
                QTI General
1342
 
1343
                The QTI-specific meta-data assigned to the parent object i.e.
1344
                Assessment, Section, Item or Object-bank.  This approach
1345
                requires that the approriate external vocabulary is defined and
1346
                referenced in label/field tuple.
1347
 
1348
                Common Cartridge Profile
1349
 
1350
                The Vocabulary structure has been removed.
1351
            </xs:documentation>
1352
        </xs:annotation>
1353
        <xs:sequence>
1354
            <xs:element name="qtimetadatafield" type="qtimetadatafieldType" minOccurs = "1" maxOccurs = "unbounded"/>
1355
        </xs:sequence>
1356
    </xs:complexType>
1357
 
1358
    <xs:complexType name="qtimetadatafieldType">
1359
        <xs:annotation>
1360
            <xs:documentation source="umlcommentbox">
1361
                The structure responsible for containing each of
1362
                the QTI-specific meta-data fields.  The label should
1363
                appear in the vocabulary.  If no vocabulary is used
1364
                then external validation cannot take place.
1365
            </xs:documentation>
1366
        </xs:annotation>
1367
        <xs:sequence>
1368
            <xs:element name="fieldlabel" type="xs:string" minOccurs = "1" maxOccurs = "1"/>
1369
            <xs:element name="fieldentry" type="xs:string" minOccurs = "1" maxOccurs = "1"/>
1370
        </xs:sequence>
1371
        <xs:attribute ref="xml:lang" use="optional"/>
1372
    </xs:complexType>
1373
 
1374
    <xs:complexType name="rubricType">
1375
        <xs:annotation>
1376
            <xs:documentation source="umlcommentbox">
1377
                This is used to contain contextual information i.e. rubric that
1378
                is important to the object e.g. it could contain standard data
1379
                values that might or might not be useful for answering the
1380
                question.
1381
 
1382
                Common Cartridge Profile
1383
 
1384
                This is used in assessments to provide instructions.  Only a
1385
                single mattext is permitted in the material.
1386
            </xs:documentation>
1387
        </xs:annotation>
1388
        <xs:sequence>
1389
            <xs:element name="material" type="materialType" minOccurs = "1" maxOccurs = "1"/>
1390
        </xs:sequence>
1391
    </xs:complexType>
1392
 
1393
    <xs:complexType name="response_labelType">
1394
        <xs:annotation>
1395
            <xs:documentation source="umlcommentbox">
1396
                This contains the possible response choices that are presented
1397
                to the user.  This information includes the material to be shown
1398
                to the user and the logical label that is associated with that
1399
                response.  The label is used in the response processing.  Flow
1400
                and non-flow approaches are supported.
1401
            </xs:documentation>
1402
        </xs:annotation>
1403
        <xs:sequence>
1404
            <xs:choice minOccurs = "0" maxOccurs = "unbounded">
1405
                <xs:element name="material" type="materialType" minOccurs = "1" maxOccurs = "1"/>
1406
                <xs:element name="material_ref" type="material_refType" minOccurs = "1" maxOccurs = "1"/>
1407
                <xs:element name="flow_mat" type="flow_matType" minOccurs = "1" maxOccurs = "1"/>
1408
            </xs:choice>
1409
        </xs:sequence>
1410
        <xs:attribute name="ident" use="required" type="xs:string"/>
1411
        <xs:attribute name="labelrefid" use="optional" type="xs:string"/>
1412
        <xs:attribute name="rshuffle" use="optional" default="Yes">
1413
            <xs:simpleType>
1414
                <xs:restriction base="xs:string">
1415
                    <xs:enumeration value="Yes"/>
1416
                    <xs:enumeration value="No"/>
1417
                </xs:restriction>
1418
            </xs:simpleType>
1419
        </xs:attribute>
1420
        <xs:attribute name="match_group" use="optional" type="xs:string"/>
1421
        <xs:attribute name="match_max" use="optional" type="xs:string"/>
1422
    </xs:complexType>
1423
 
1424
    <xs:complexType name="flow_labelType">
1425
        <xs:annotation>
1426
            <xs:documentation source="umlcommentbox">
1427
                This is the blocking/paragraph equivalent to the 'response_label'
1428
                structure.  This structure shold always be used to encapsulate the
1429
                'response_label construct.
1430
            </xs:documentation>
1431
        </xs:annotation>
1432
        <xs:sequence>
1433
            <xs:choice minOccurs = "1" maxOccurs = "unbounded">
1434
                <xs:element name="flow_label" type="flow_labelType" minOccurs = "1" maxOccurs = "1"/>
1435
                <xs:element name="response_label" type="response_labelType" minOccurs = "1" maxOccurs = "1"/>
1436
            </xs:choice>
1437
        </xs:sequence>
1438
        <xs:attribute name="class" use="optional" default="Block" type="xs:string"/>
1439
    </xs:complexType>
1440
 
1441
    <xs:complexType name="response_lidType">
1442
        <xs:annotation>
1443
            <xs:documentation source="umlcommentbox">
1444
                QTI General
1445
 
1446
                This contains the instructions for the presentation of questions whose response will be either a 'response_lid' (logical identifier),
1447
                'response_xy' (xy-co-ordinate), 'response_str' (a string), 'response_num' (a number) and 'response_grp' ( a group of logical
1448
                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
1449
                participant.
1450
 
1451
                Common Cartridge Profile
1452
 
1453
                Only the response_lid and response_str response types are supported with render_choice and render_fib rendering.
1454
            </xs:documentation>
1455
        </xs:annotation>
1456
        <xs:sequence>
1457
            <xs:choice minOccurs = "0" maxOccurs = "1">
1458
                <xs:element name="material" type="materialType" minOccurs = "1" maxOccurs = "1"/>
1459
                <xs:element name="material_ref" type="material_refType" minOccurs = "1" maxOccurs = "1"/>
1460
            </xs:choice>
1461
            <xs:choice minOccurs = "1" maxOccurs = "1">
1462
                <xs:element name="render_choice" type="render_choiceType" minOccurs = "1" maxOccurs = "1"/>
1463
                <xs:element name="render_fib" type="render_fibType" minOccurs = "1" maxOccurs = "1"/>
1464
            </xs:choice>
1465
            <xs:choice minOccurs = "0" maxOccurs = "1">
1466
                <xs:element name="material" type="materialType" minOccurs = "1" maxOccurs = "1"/>
1467
                <xs:element name="material_ref" type="material_refType" minOccurs = "1" maxOccurs = "1"/>
1468
            </xs:choice>
1469
        </xs:sequence>
1470
        <xs:attribute name="rcardinality" use="optional" default="Single">
1471
            <xs:simpleType>
1472
                <xs:restriction base="xs:string">
1473
                    <xs:enumeration value="Single"/>
1474
                    <xs:enumeration value="Multiple"/>
1475
                    <xs:enumeration value="Ordered"/>
1476
                </xs:restriction>
1477
            </xs:simpleType>
1478
        </xs:attribute>
1479
        <xs:attribute name="rtiming" use="optional" default="No">
1480
            <xs:simpleType>
1481
                <xs:restriction base="xs:string">
1482
                    <xs:enumeration value="Yes"/>
1483
                    <xs:enumeration value="No"/>
1484
                </xs:restriction>
1485
            </xs:simpleType>
1486
        </xs:attribute>
1487
        <xs:attribute name="ident" use="required" type="xs:string"/>
1488
    </xs:complexType>
1489
 
1490
    <xs:complexType name="response_strType">
1491
        <xs:annotation>
1492
            <xs:documentation source="umlcommentbox">
1493
                QTI General
1494
 
1495
                This contains the instructions for the presentation of questions whose response will be either a 'response_lid' (logical identifier),
1496
                'response_xy' (xy-co-ordinate), 'response_str' (a string), 'response_num' (a number) and 'response_grp' ( a group of logical
1497
                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
1498
                participant.
1499
 
1500
                Common Cartridge Profile
1501
 
1502
                Only the response_lid and response_str response types are supported with render_choice and render_fib rendering.
1503
            </xs:documentation>
1504
        </xs:annotation>
1505
        <xs:sequence>
1506
            <xs:choice minOccurs = "0" maxOccurs = "1">
1507
                <xs:element name="material" type="materialType" minOccurs = "1" maxOccurs = "1"/>
1508
                <xs:element name="material_ref" type="material_refType" minOccurs = "1" maxOccurs = "1"/>
1509
            </xs:choice>
1510
            <xs:choice minOccurs = "1" maxOccurs = "1">
1511
                <xs:element name="render_choice" type="render_choiceType" minOccurs = "1" maxOccurs = "1"/>
1512
                <xs:element name="render_fib" type="render_fibType" minOccurs = "1" maxOccurs = "1"/>
1513
            </xs:choice>
1514
            <xs:choice minOccurs = "0" maxOccurs = "1">
1515
                <xs:element name="material" type="materialType" minOccurs = "1" maxOccurs = "1"/>
1516
                <xs:element name="material_ref" type="material_refType" minOccurs = "1" maxOccurs = "1"/>
1517
            </xs:choice>
1518
        </xs:sequence>
1519
        <xs:attribute name="rcardinality" use="optional" default="Single">
1520
            <xs:simpleType>
1521
                <xs:restriction base="xs:string">
1522
                    <xs:enumeration value="Single"/>
1523
                    <xs:enumeration value="Multiple"/>
1524
                    <xs:enumeration value="Ordered"/>
1525
                </xs:restriction>
1526
            </xs:simpleType>
1527
        </xs:attribute>
1528
        <xs:attribute name="rtiming" use="optional" default="No">
1529
            <xs:simpleType>
1530
                <xs:restriction base="xs:string">
1531
                    <xs:enumeration value="Yes"/>
1532
                    <xs:enumeration value="No"/>
1533
                </xs:restriction>
1534
            </xs:simpleType>
1535
        </xs:attribute>
1536
        <xs:attribute name="ident" use="required" type="xs:string"/>
1537
    </xs:complexType>
1538
 
1539
    <xs:complexType name="solutionType">
1540
        <xs:annotation>
1541
            <xs:documentation source="umlcommentbox">
1542
                QTI General
1543
 
1544
                Contains the solution(s) that are to be revealed to the participant.  When these solutions are revealed is outside the scope of the
1545
                specification.  The information can be revealed in several manners.  The default mode is to show the 'Complete' solution.
1546
 
1547
                Common Cartridge Profile
1548
 
1549
                The material is presented in the form of flow_mat only.  The only form of feedback is 'Complete'.
1550
            </xs:documentation>
1551
        </xs:annotation>
1552
        <xs:sequence>
1553
            <xs:element name="solutionmaterial" type="solutionmaterialType" minOccurs = "1" maxOccurs = "unbounded"/>
1554
        </xs:sequence>
1555
        <xs:attribute name="feedbackstyle" use="optional" default="Complete">
1556
            <xs:simpleType>
1557
                <xs:restriction base="xs:string">
1558
                    <xs:enumeration value="Complete"/>
1559
                </xs:restriction>
1560
            </xs:simpleType>
1561
        </xs:attribute>
1562
    </xs:complexType>
1563
 
1564
    <xs:complexType name="hintType">
1565
        <xs:annotation>
1566
            <xs:documentation source="umlcommentbox">
1567
                QTI General
1568
 
1569
                Contains the hints(s) that are to be revealed to the participant.  When these hints are revealed is outside the scope of the
1570
                specification.  The information can be revealed in several manners.  The default mode is to show the 'Complete' hint.
1571
 
1572
                Common Cartridge Profile
1573
 
1574
                The material is presented in the form of flow_mat only.  The only form of feedback is 'Complete'.
1575
            </xs:documentation>
1576
        </xs:annotation>
1577
        <xs:sequence>
1578
            <xs:element name="hintmaterial" type="hintmaterialType" minOccurs = "1" maxOccurs = "unbounded"/>
1579
        </xs:sequence>
1580
        <xs:attribute name="feedbackstyle" use="optional" default="Complete">
1581
            <xs:simpleType>
1582
                <xs:restriction base="xs:string">
1583
                    <xs:enumeration value="Complete"/>
1584
                </xs:restriction>
1585
            </xs:simpleType>
1586
        </xs:attribute>
1587
    </xs:complexType>
1588
 
1589
    <xs:complexType name="conditionvarType">
1590
        <xs:annotation>
1591
            <xs:documentation source="umlcommentbox">
1592
                QTI General
1593
 
1594
                The conditional test that is to be applied to the user’s response.
1595
                A wide range of separate and combinatorial tests can be applied.
1596
 
1597
                Common Cartridge Profile
1598
 
1599
                The extension has been removed.  All of the conditions operating
1600
                on duration have been removed.  The only permited conditions are
1601
                'varequal', 'varsubstring', 'and', 'other'.
1602
            </xs:documentation>
1603
        </xs:annotation>
1604
        <xs:sequence>
1605
            <xs:choice minOccurs = "1" maxOccurs = "unbounded">
1606
                <xs:element name="and" type="andType" minOccurs = "1" maxOccurs = "1"/>
1607
                <xs:element ref="other" minOccurs = "1" maxOccurs = "1"/>
1608
                <xs:element name="varequal" type="varequalType" minOccurs = "1" maxOccurs = "1"/>
1609
                <xs:element name="varsubstring" type="varsubstringType" minOccurs = "1" maxOccurs = "1"/>
1610
            </xs:choice>
1611
        </xs:sequence>
1612
    </xs:complexType>
1613
 
1614
    <xs:complexType name="solutionmaterialType">
1615
        <xs:annotation>
1616
            <xs:documentation source="umlcommentbox">
1617
                This is the information that is used to describe the solution.
1618
            </xs:documentation>
1619
        </xs:annotation>
1620
        <xs:choice>
1621
            <xs:element name="flow_mat" type="flow_matType" minOccurs = "1" maxOccurs = "unbounded"/>
1622
            <xs:element name="material" type="materialType" minOccurs = "1" maxOccurs = "unbounded"/>
1623
        </xs:choice>
1624
    </xs:complexType>
1625
 
1626
    <xs:complexType name="hintmaterialType">
1627
        <xs:annotation>
1628
            <xs:documentation source="umlcommentbox">
1629
                This is the information that is presented as a hint.
1630
            </xs:documentation>
1631
        </xs:annotation>
1632
        <xs:choice>
1633
            <xs:element name="flow_mat" type="flow_matType" minOccurs = "1" maxOccurs = "unbounded"/>
1634
            <xs:element name="material" type="materialType" minOccurs = "1" maxOccurs = "unbounded"/>
1635
        </xs:choice>
1636
    </xs:complexType>
1637
 
1638
    <xs:complexType name="andType">
1639
        <xs:annotation>
1640
            <xs:documentation source="umlcommentbox">
1641
                QTI General
1642
 
1643
                This defines the set of clauses that can be used within the
1644
                logic statements of 'and', 'or' and 'not'.  These logic statements
1645
                enable the construction of complex conditional tests.
1646
 
1647
                Common Cartridge Profile
1648
 
1649
                The extension has been removed.  All of the conditions operating
1650
                on duration have been removed.  The 'or' conditional has been removed
1651
                and 'and' and 'not' have been considerably simplified.
1652
            </xs:documentation>
1653
        </xs:annotation>
1654
        <xs:sequence>
1655
            <xs:choice minOccurs = "1" maxOccurs = "unbounded">
1656
                <xs:element name="not" type="notType" minOccurs = "1" maxOccurs = "1"/>
1657
                <xs:element name="varequal" type="varequalType" minOccurs = "1" maxOccurs = "1"/>
1658
            </xs:choice>
1659
        </xs:sequence>
1660
    </xs:complexType>
1661
 
1662
    <xs:complexType name="notType">
1663
        <xs:annotation>
1664
            <xs:documentation source="umlcommentbox">
1665
                QTI General
1666
 
1667
                This defines the set of clauses that can be used within the
1668
                logic statements of 'and', 'or' and 'not'.  These logic statements
1669
                enable the construction of complex conditional tests.
1670
 
1671
                Common Cartridge Profile
1672
 
1673
                The extension has been removed.  All of the conditions operating
1674
                on duration have been removed.  The 'or' conditional has been removed
1675
                and 'and' and 'not' have been considerably simplified.
1676
            </xs:documentation>
1677
        </xs:annotation>
1678
        <xs:sequence>
1679
            <xs:choice minOccurs = "1" maxOccurs = "unbounded">
1680
                <xs:element name="varequal" type="varequalType" minOccurs = "1" maxOccurs = "1"/>
1681
            </xs:choice>
1682
        </xs:sequence>
1683
    </xs:complexType>
1684
 
1685
    <xs:complexType name="mattextType">
1686
        <xs:annotation>
1687
            <xs:documentation source="umlcommentbox">
1688
                This is the container of any text that is to be displayed to the users.
1689
                It is the base type for normal and emphasised text.
1690
            </xs:documentation>
1691
        </xs:annotation>
1692
        <xs:simpleContent>
1693
            <xs:extension base="xs:string">
1694
                <xs:attribute name="texttype" use="optional" default="text/plain" type="xs:string"/>
1695
                <xs:attribute name="charset" use="optional" default="ascii-us" type="xs:string"/>
1696
                <xs:attribute name="label" use="optional" type="xs:string"/>
1697
                <xs:attribute name="uri" use="optional" type="xs:string"/>
1698
                <xs:attribute name="width" use="optional" type="xs:string"/>
1699
                <xs:attribute name="height" use="optional" type="xs:string"/>
1700
                <xs:attribute name="x0" use="optional" type="xs:string"/>
1701
                <xs:attribute name="y0" use="optional" type="xs:string"/>
1702
                <xs:attribute ref="xml:lang" use="optional"/>
1703
                <xs:attribute ref="xml:space" use="optional" default="default"/>
1704
            </xs:extension>
1705
        </xs:simpleContent>
1706
    </xs:complexType>
1707
 
1708
    <xs:complexType name="material_refType">
1709
        <xs:annotation>
1710
            <xs:documentation source="umlcommentbox">
1711
                This is used to contain a reference to the required full material block.  This
1712
                material will have had an identifier assigned to enable such a reference to
1713
                be reconciled when the instance is parsed into the system.
1714
            </xs:documentation>
1715
        </xs:annotation>
1716
        <xs:complexContent>
1717
            <xs:extension base="EmptyPrimitiveTypeType">
1718
                <xs:attribute name="linkrefid" use="required" type="xs:string"/>
1719
            </xs:extension>
1720
        </xs:complexContent>
1721
    </xs:complexType>
1722
 
1723
    <xs:complexType name="matrefType">
1724
        <xs:annotation>
1725
            <xs:documentation source="umlcommentbox">
1726
                This is used to contain a reference to the required full material block.  This
1727
                material will have had an identifier assigned to enable such a reference to
1728
                be reconciled when the instance is parsed into the system.
1729
            </xs:documentation>
1730
        </xs:annotation>
1731
        <xs:complexContent>
1732
            <xs:extension base="EmptyPrimitiveTypeType">
1733
                <xs:attribute name="linkrefid" use="required" type="xs:string"/>
1734
            </xs:extension>
1735
        </xs:complexContent>
1736
    </xs:complexType>
1737
 
1738
    <xs:complexType name="decvarType">
1739
        <xs:annotation>
1740
            <xs:documentation source="umlcommentbox">
1741
                QTI General
1742
 
1743
                This is used  for the declaration of the scoring variables.
1744
                The name of the variable that is to be declared.  The default
1745
                name is ‘SCORE’.  All numeric variables have the associated
1746
                 ‘x.min’, ‘x.max’ and ‘x.normalised’ variables declared.
1747
                Several of the optional attributes depend upon the type of
1748
                variable that is declared.
1749
 
1750
                Common Cartridge Profile
1751
 
1752
                Only the variable types of decimal and integer are permitted.
1753
                Only a single "SCORE" variable is permitted.
1754
            </xs:documentation>
1755
        </xs:annotation>
1756
        <xs:simpleContent>
1757
            <xs:extension base="xs:string">
1758
                <xs:attribute name="varname" use="required" fixed="SCORE" type="xs:string"/>
1759
                <xs:attribute name="vartype" use="optional" default="Integer">
1760
                    <xs:simpleType>
1761
                        <xs:restriction base="xs:string">
1762
                            <xs:enumeration value="Decimal"/>
1763
                            <xs:enumeration value="Integer"/>
1764
                        </xs:restriction>
1765
                    </xs:simpleType>
1766
                </xs:attribute>
1767
                <xs:attribute name="minvalue" use="optional" type="xs:string"/>
1768
                <xs:attribute name="maxvalue" use="optional" type="xs:string"/>
1769
            </xs:extension>
1770
        </xs:simpleContent>
1771
    </xs:complexType>
1772
 
1773
    <xs:complexType name="setvarType">
1774
        <xs:annotation>
1775
            <xs:documentation source="umlcommentbox">
1776
                QTI General
1777
 
1778
                This is responsible for changing the value of the scoring
1779
                variable as a result of the associated response processing test.
1780
                The default action is to 'Set' the 'SCORE' variable to the value
1781
                given in the string.
1782
 
1783
                Common Cartridge Profile
1784
 
1785
                Only the actons Set, Add and Subtract are premitted.
1786
            </xs:documentation>
1787
        </xs:annotation>
1788
        <xs:simpleContent>
1789
            <xs:extension base="xs:string">
1790
                <xs:attribute name="varname" use="optional" default="SCORE" type="xs:string"/>
1791
                <xs:attribute name="action" use="optional" default="Set">
1792
                    <xs:simpleType>
1793
                        <xs:restriction base="xs:string">
1794
                            <xs:enumeration value="Set"/>
1795
                        </xs:restriction>
1796
                    </xs:simpleType>
1797
                </xs:attribute>
1798
            </xs:extension>
1799
        </xs:simpleContent>
1800
    </xs:complexType>
1801
 
1802
    <xs:complexType name="varequalType">
1803
        <xs:annotation>
1804
            <xs:documentation source="umlcommentbox">
1805
                This is the test of equivalence.  The data for the test is
1806
                contained as a string.  The accompanying attributes are
1807
                the identifier for the associated 'response_label', the
1808
                ordinal 'index' of the response and whether or not the
1809
                value is case-sensitive when processing strings.
1810
            </xs:documentation>
1811
        </xs:annotation>
1812
        <xs:simpleContent>
1813
            <xs:extension base="xs:string">
1814
                <xs:attribute name="respident" use="required" type="xs:string"/>
1815
                <xs:attribute name="case" use="optional" default="No">
1816
                    <xs:simpleType>
1817
                        <xs:restriction base="xs:string">
1818
                            <xs:enumeration value="No"/>
1819
                            <xs:enumeration value="Yes"/>
1820
                        </xs:restriction>
1821
                    </xs:simpleType>
1822
                </xs:attribute>
1823
            </xs:extension>
1824
        </xs:simpleContent>
1825
    </xs:complexType>
1826
 
1827
    <xs:complexType name="displayfeedbackType">
1828
        <xs:annotation>
1829
            <xs:documentation source="umlcommentbox">
1830
                This is used for assigning an associated feedback to the
1831
                aggregated scoring if the ‘True’ state results.  Feedback
1832
                for hints, solutions and response processing are supported.
1833
                The feedback is identified using the pointer 'linkrefid'.
1834
            </xs:documentation>
1835
        </xs:annotation>
1836
        <xs:simpleContent>
1837
            <xs:extension base="xs:string">
1838
                <xs:attribute name="feedbacktype" use="required">
1839
                    <xs:simpleType>
1840
                        <xs:restriction base="xs:string">
1841
                            <xs:enumeration value="Response"/>
1842
                            <xs:enumeration value="Solution"/>
1843
                            <xs:enumeration value="Hint"/>
1844
                        </xs:restriction>
1845
                    </xs:simpleType>
1846
                </xs:attribute>
1847
                <xs:attribute name="linkrefid" use="required" type="xs:string"/>
1848
            </xs:extension>
1849
        </xs:simpleContent>
1850
    </xs:complexType>
1851
 
1852
    <xs:complexType name="varsubstringType">
1853
        <xs:annotation>
1854
            <xs:documentation source="umlcommentbox">
1855
                This is the test for a contained substring.
1856
                The data for comparison is presented as a
1857
                string.  The associated attributes are the
1858
                response label identifier, the ordinal index of
1859
                the response and whether or not the value is
1860
                case-sensitive when processing the strings.
1861
            </xs:documentation>
1862
        </xs:annotation>
1863
        <xs:simpleContent>
1864
            <xs:extension base="xs:string">
1865
                <xs:attribute name="respident" use="required" type="xs:string"/>
1866
                <xs:attribute name="case" use="optional" default="No">
1867
                    <xs:simpleType>
1868
                        <xs:restriction base="xs:string">
1869
                            <xs:enumeration value="No"/>
1870
                            <xs:enumeration value="Yes"/>
1871
                        </xs:restriction>
1872
                    </xs:simpleType>
1873
                </xs:attribute>
1874
            </xs:extension>
1875
        </xs:simpleContent>
1876
    </xs:complexType>
1877
 
1878
    <!-- ================================================================================================== -->
1879
 
1880
    <!-- Declaration of the elements ********************************************************************** -->
1881
 
1882
    <!-- ================================================================================================== -->
1883
 
1884
    <!-- Declaration of the root element(s) *************************************************************** -->
1885
 
1886
    <xs:element name="questestinterop" type="questestinteropType"/>
1887
 
1888
    <!-- ================================================================================================== -->
1889
 
1890
</xs:schema>