qti 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +28 -0
- data/Rakefile +1 -0
- data/lib/qti.rb +62 -0
- data/lib/qti/models/base.rb +80 -0
- data/lib/qti/models/manifest.rb +20 -0
- data/lib/qti/v1/models/assessment.rb +17 -0
- data/lib/qti/v1/models/assessment_item.rb +59 -0
- data/lib/qti/v1/models/base.rb +13 -0
- data/lib/qti/v1/models/choices/logical_identifier_choice.rb +26 -0
- data/lib/qti/v1/models/interactions/logical_identifier_interaction.rb +32 -0
- data/lib/qti/v2/models/assessment_item.rb +62 -0
- data/lib/qti/v2/models/assessment_test.rb +32 -0
- data/lib/qti/v2/models/base.rb +70 -0
- data/lib/qti/v2/models/choices/simple_choice.rb +28 -0
- data/lib/qti/v2/models/interactions.rb +25 -0
- data/lib/qti/v2/models/interactions/choice_interaction.rb +50 -0
- data/spec/fixtures/items_1.2/multiple_answer.xml +105 -0
- data/spec/fixtures/items_1.2/multiple_choice.xml +83 -0
- data/spec/fixtures/items_1.2/true_false.xml +50 -0
- data/spec/fixtures/items_2.1/Example01-modalFeedback.xml +79 -0
- data/spec/fixtures/items_2.1/Example02-feedbackInline.xml +67 -0
- data/spec/fixtures/items_2.1/Example03-feedbackBlock-solution-random.xml +223 -0
- data/spec/fixtures/items_2.1/Example03-feedbackBlock-solution.xml +238 -0
- data/spec/fixtures/items_2.1/Example04-feedbackBlock-templateBlock.xml +582 -0
- data/spec/fixtures/items_2.1/Example05-feedbackBlock-adaptive.xml +397 -0
- data/spec/fixtures/items_2.1/adaptive.xml +286 -0
- data/spec/fixtures/items_2.1/adaptive_template.xml +350 -0
- data/spec/fixtures/items_2.1/associate.xml +33 -0
- data/spec/fixtures/items_2.1/audio-video.xml +46 -0
- data/spec/fixtures/items_2.1/choice.xml +31 -0
- data/spec/fixtures/items_2.1/choice_aria.xml +42 -0
- data/spec/fixtures/items_2.1/choice_fixed.xml +33 -0
- data/spec/fixtures/items_2.1/choice_multiple.xml +31 -0
- data/spec/fixtures/items_2.1/choice_multiple_chocolade.xml +74 -0
- data/spec/fixtures/items_2.1/choice_multiple_rtl.xml +33 -0
- data/spec/fixtures/items_2.1/choice_ruby.xml +39 -0
- data/spec/fixtures/items_2.1/choice_t_f.xml +30 -0
- data/spec/fixtures/items_2.1/choice_true_false.xml +30 -0
- data/spec/fixtures/items_2.1/data-attributes.xml +61 -0
- data/spec/fixtures/items_2.1/drawing.xml +16 -0
- data/spec/fixtures/items_2.1/essay.xml +14 -0
- data/spec/fixtures/items_2.1/extended_text.xml +24 -0
- data/spec/fixtures/items_2.1/extended_text_rubric.xml +36 -0
- data/spec/fixtures/items_2.1/feedback_adaptive.xml +142 -0
- data/spec/fixtures/items_2.1/figures.xml +32 -0
- data/spec/fixtures/items_2.1/gap_match.xml +33 -0
- data/spec/fixtures/items_2.1/graphic_associate.xml +36 -0
- data/spec/fixtures/items_2.1/graphic_gap_match.xml +54 -0
- data/spec/fixtures/items_2.1/graphic_gap_match_text.xml +50 -0
- data/spec/fixtures/items_2.1/graphic_order.xml +32 -0
- data/spec/fixtures/items_2.1/hint.xml +85 -0
- data/spec/fixtures/items_2.1/hotspot.xml +26 -0
- data/spec/fixtures/items_2.1/hottext.xml +33 -0
- data/spec/fixtures/items_2.1/images/CBG.png +0 -0
- data/spec/fixtures/items_2.1/images/EBG.png +0 -0
- data/spec/fixtures/items_2.1/images/EDI.png +0 -0
- data/spec/fixtures/items_2.1/images/GLA.png +0 -0
- data/spec/fixtures/items_2.1/images/MAN.png +0 -0
- data/spec/fixtures/items_2.1/images/MCH.png +0 -0
- data/spec/fixtures/items_2.1/images/airport.png +0 -0
- data/spec/fixtures/items_2.1/images/blueStar.png +0 -0
- data/spec/fixtures/items_2.1/images/blue_door.png +0 -0
- data/spec/fixtures/items_2.1/images/bus.png +0 -0
- data/spec/fixtures/items_2.1/images/castle.png +0 -0
- data/spec/fixtures/items_2.1/images/greenTriangle.png +0 -0
- data/spec/fixtures/items_2.1/images/green_door.png +0 -0
- data/spec/fixtures/items_2.1/images/house.png +0 -0
- data/spec/fixtures/items_2.1/images/open_car.png +0 -0
- data/spec/fixtures/items_2.1/images/open_goat.png +0 -0
- data/spec/fixtures/items_2.1/images/plane.png +0 -0
- data/spec/fixtures/items_2.1/images/postcard.eps +3581 -0
- data/spec/fixtures/items_2.1/images/postcard.png +0 -0
- data/spec/fixtures/items_2.1/images/rectangle.svg +1 -0
- data/spec/fixtures/items_2.1/images/redCircle.png +0 -0
- data/spec/fixtures/items_2.1/images/red_door.png +0 -0
- data/spec/fixtures/items_2.1/images/sign.png +0 -0
- data/spec/fixtures/items_2.1/images/survey.jpg +0 -0
- data/spec/fixtures/items_2.1/images/train.png +0 -0
- data/spec/fixtures/items_2.1/images/uk.png +0 -0
- data/spec/fixtures/items_2.1/images/ukair.png +0 -0
- data/spec/fixtures/items_2.1/images/ukairtags.png +0 -0
- data/spec/fixtures/items_2.1/imsmanifest.xml +227 -0
- data/spec/fixtures/items_2.1/inline_choice.xml +26 -0
- data/spec/fixtures/items_2.1/inline_choice_math.xml +68 -0
- data/spec/fixtures/items_2.1/likert.xml +21 -0
- data/spec/fixtures/items_2.1/match.xml +41 -0
- data/spec/fixtures/items_2.1/math.xml +35 -0
- data/spec/fixtures/items_2.1/mc_calc3.xml +164 -0
- data/spec/fixtures/items_2.1/mc_calc5.xml +211 -0
- data/spec/fixtures/items_2.1/mc_stat2.xml +219 -0
- data/spec/fixtures/items_2.1/media_coords.xml +33 -0
- data/spec/fixtures/items_2.1/multi-input.xml +271 -0
- data/spec/fixtures/items_2.1/nested_object.xml +26 -0
- data/spec/fixtures/items_2.1/order.xml +25 -0
- data/spec/fixtures/items_2.1/order_partial_scoring.xml +55 -0
- data/spec/fixtures/items_2.1/order_rtl.xml +27 -0
- data/spec/fixtures/items_2.1/orkney1.xml +34 -0
- data/spec/fixtures/items_2.1/orkney2.xml +34 -0
- data/spec/fixtures/items_2.1/position_object.xml +34 -0
- data/spec/fixtures/items_2.1/select_point.xml +23 -0
- data/spec/fixtures/items_2.1/shared/orkney.css +1 -0
- data/spec/fixtures/items_2.1/shared/orkney.html +20 -0
- data/spec/fixtures/items_2.1/slider.xml +35 -0
- data/spec/fixtures/items_2.1/svg.xml +28 -0
- data/spec/fixtures/items_2.1/template.xml +88 -0
- data/spec/fixtures/items_2.1/template_image.xml +74 -0
- data/spec/fixtures/items_2.1/text_entry.xml +27 -0
- data/spec/fixtures/items_2.1/upload.xml +18 -0
- data/spec/fixtures/items_2.1/upload_composite.xml +24 -0
- data/spec/fixtures/test_qti_1.2.zip +0 -0
- data/spec/fixtures/test_qti_1.2/contact info.png +0 -0
- data/spec/fixtures/test_qti_1.2/exam1/my_files/org0/images/image.png +0 -0
- data/spec/fixtures/test_qti_1.2/exam1/my_files/org1/images/image.png +0 -0
- data/spec/fixtures/test_qti_1.2/image.png +0 -0
- data/spec/fixtures/test_qti_1.2/imsmanifest.xml +37 -0
- data/spec/fixtures/test_qti_1.2/quiz.xml +216 -0
- data/spec/fixtures/test_qti_2.1.zip +0 -0
- data/spec/fixtures/test_qti_2.1/assessment.xml +77 -0
- data/spec/fixtures/test_qti_2.1/imsmanifest.xml +211 -0
- data/spec/fixtures/test_qti_2.1/mathassess.xsd +54 -0
- data/spec/fixtures/test_qti_2.1/multiple-answer/multiple-answer.xml +31 -0
- data/spec/fixtures/test_qti_2.1/multiple-choice/multiple-choice.xml +31 -0
- data/spec/fixtures/test_qti_2.1/text-entry/text-entry.xml +330 -0
- data/spec/fixtures/test_qti_2.1/true-false/true-false.xml +55 -0
- data/spec/fixtures/tests/feedbackTest/assessment.xml +252 -0
- data/spec/fixtures/tests/feedbackTest/id-38d47747fb30/Example02-feedbackInline.xml +51 -0
- data/spec/fixtures/tests/feedbackTest/id-5e216df10030/Example03-feedbackBlock-solution.xml +199 -0
- data/spec/fixtures/tests/feedbackTest/id-9c33d141576e/Example05-feedbackBlock-adaptive.xml +330 -0
- data/spec/fixtures/tests/feedbackTest/id-aaa0bbf5da1d/Example03-feedbackBlock-solution-random.xml +223 -0
- data/spec/fixtures/tests/feedbackTest/id-d599169403d2/Example04-feedbackBlock-templateBlock.xml +534 -0
- data/spec/fixtures/tests/feedbackTest/id-fa3ee5852723/Example01-modalFeedback.xml +55 -0
- data/spec/fixtures/tests/feedbackTest/imsmanifest.xml +239 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/Choicemultiple_2014410822.xml +110 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/Choicemultiple_871212949.xml +208 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/Choicesingle_853928446.xml +159 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/Choicetruefalse_176040516.xml +98 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/Hotspot_278940407.xml +109 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/Hottext_801974120.xml +106 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/InteractionMixSachsen_1901710679.xml +54 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/Matchmultiple_1038910213.xml +139 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/Matchsingle_143114773.xml +133 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/Order_913967682.xml +117 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/TextEntry_883368511.xml +114 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/TextEntrynumeric_2040297025.xml +154 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/TextEntrynumeric_770468849.xml +124 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/TextEntrysubset_806481421.xml +227 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/imsmanifest.xml +278 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/media/03c5e2f774db49598deb3ac7d05b53f9.jpg +0 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/media/0563e67fb1bb48ad882e0a5abf2a2686.jpg +0 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/media/2f44366716474a5d8e2a2e32346cbc05.jpg +0 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/media/71a299b50b5e4b1492f8ee51ce25be7d.jpg +0 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/media/a439b702d5034ca38f6df26a12835db3.jpg +0 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/media/b660fc9f268c4ef688d8606116c70160.jpg +0 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/media/c2f541343b9b4bfdba9fc90c7a18403e.jpg +0 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/media/e18b5a2eb8104d0994a182ee0176a05c.jpg +0 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/media/f88c5aa2c6724a388fdbadc7133eb757.jpg +0 -0
- data/spec/fixtures/tests/interactionmix_saxony_v3/media/ffe337505ef74334a0cecb33310f99c1.jpg +0 -0
- data/spec/fixtures/tests/tests/complete.xml +33 -0
- data/spec/fixtures/tests/tests/report.xml +70 -0
- data/spec/fixtures/tests/tests/rtest01-fragment.xml +12 -0
- data/spec/fixtures/tests/tests/rtest01-set01.xml +17 -0
- data/spec/fixtures/tests/tests/rtest01-set02.xml +17 -0
- data/spec/fixtures/tests/tests/rtest01-set03.xml +17 -0
- data/spec/fixtures/tests/tests/rtest01.xml +16 -0
- data/spec/fixtures/tests/tests/rtest02.xml +48 -0
- data/spec/fixtures/tests/tests/rtest03.xml +38 -0
- data/spec/fixtures/tests/tests/rtest04.xml +50 -0
- data/spec/fixtures/tests/tests/rtest06.xml +34 -0
- data/spec/fixtures/tests/tests/rtest08.xml +38 -0
- data/spec/fixtures/tests/tests/rtest09.xml +33 -0
- data/spec/fixtures/tests/tests/rtest10.xml +48 -0
- data/spec/fixtures/tests/tests/rtest12.xml +38 -0
- data/spec/fixtures/tests/tests/rtest13.xml +62 -0
- data/spec/fixtures/tests/tests/rtest22.xml +41 -0
- data/spec/fixtures/tests/tests/rtest24.xml +37 -0
- data/spec/fixtures/tests/tests/rtest25.xml +62 -0
- data/spec/fixtures/tests/tests/rtest26.xml +38 -0
- data/spec/fixtures/tests/tests/rtest27.xml +46 -0
- data/spec/qti/models/base_spec.rb +71 -0
- data/spec/qti/models/manifest_spec.rb +19 -0
- data/spec/qti/v1/models/assessment_item_spec.rb +49 -0
- data/spec/qti/v1/models/assessment_spec.rb +18 -0
- data/spec/qti/v1/models/choices/logical_identifier_choice_spec.rb +23 -0
- data/spec/qti/v1/models/interactions/logical_identifier_interaction_spec.rb +20 -0
- data/spec/qti/v2/models/assessment_item_spec.rb +67 -0
- data/spec/qti/v2/models/assessment_test_spec.rb +60 -0
- data/spec/qti/v2/models/choices/simple_choice_spec.rb +22 -0
- data/spec/qti/v2/models/interactions/choice_interaction_spec.rb +27 -0
- data/spec/qti_spec.rb +38 -0
- data/spec/spec_helper.rb +10 -0
- metadata +506 -0
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'qti/models/base'
|
2
|
+
|
3
|
+
module Qti
|
4
|
+
module V2
|
5
|
+
module Models
|
6
|
+
class Base < Qti::Models::Base
|
7
|
+
BODY_ELEMENTS_CSS = %w(
|
8
|
+
atomicBlock
|
9
|
+
atomicInline
|
10
|
+
caption
|
11
|
+
choice
|
12
|
+
col
|
13
|
+
colgroup
|
14
|
+
div
|
15
|
+
dl
|
16
|
+
dlElement
|
17
|
+
hr
|
18
|
+
img
|
19
|
+
li
|
20
|
+
object
|
21
|
+
ol
|
22
|
+
p
|
23
|
+
printedVariable
|
24
|
+
prompt
|
25
|
+
simpleBlock
|
26
|
+
simpleInline
|
27
|
+
table
|
28
|
+
tableCell
|
29
|
+
tbody
|
30
|
+
templateElement
|
31
|
+
tfoot
|
32
|
+
thead
|
33
|
+
tr
|
34
|
+
ul
|
35
|
+
infoControl
|
36
|
+
).join(',').freeze
|
37
|
+
|
38
|
+
INTERACTION_ELEMENTS_CSS = %w(
|
39
|
+
blockInteraction
|
40
|
+
customInteraction
|
41
|
+
inlineInteraction
|
42
|
+
positionObjectInteraction
|
43
|
+
endAttemptInteraction
|
44
|
+
inlineChoiceInteraction
|
45
|
+
textEntryInteraction
|
46
|
+
associateInteraction
|
47
|
+
choiceInteraction
|
48
|
+
drawingInteraction
|
49
|
+
extendedTextInteraction
|
50
|
+
gapMatchInteraction
|
51
|
+
graphicInteraction
|
52
|
+
hottextInteraction
|
53
|
+
matchInteraction
|
54
|
+
mediaInteraction
|
55
|
+
orderInteraction
|
56
|
+
sliderInteraction
|
57
|
+
uploadInteraction
|
58
|
+
).join(',').freeze
|
59
|
+
|
60
|
+
CHOICE_ELEMENTS_CSS = %w(
|
61
|
+
simpleChoice
|
62
|
+
).join(',').freeze
|
63
|
+
|
64
|
+
def qti_version
|
65
|
+
2
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'qti/v2/models/base'
|
2
|
+
|
3
|
+
module Qti
|
4
|
+
module V2
|
5
|
+
module Models
|
6
|
+
module Choices
|
7
|
+
class SimpleChoice < Qti::V2::Models::Base
|
8
|
+
PROHIBITED_NODE_NAMES = %w(feedbackInline).join(',').freeze
|
9
|
+
def initialize(node)
|
10
|
+
@node = node
|
11
|
+
end
|
12
|
+
|
13
|
+
def identifier
|
14
|
+
@identifier ||= @node.attributes['identifier'].value
|
15
|
+
end
|
16
|
+
|
17
|
+
def item_body
|
18
|
+
@item_body ||= begin
|
19
|
+
node = @node.dup
|
20
|
+
node.children.filter(PROHIBITED_NODE_NAMES).map(&:unlink)
|
21
|
+
node.content.strip.gsub(/\s+/, ' ')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Populate the subclasses
|
2
|
+
Dir["#{__dir__}/interactions/*.rb"].each { |f| load f }
|
3
|
+
|
4
|
+
module Qti
|
5
|
+
module V2
|
6
|
+
module Models
|
7
|
+
module Interactions
|
8
|
+
# This one finds the correct parsing model based on the provided xml node
|
9
|
+
def self.interaction_model(node)
|
10
|
+
subclasses = constants.map { |c| const_get(c) }
|
11
|
+
|
12
|
+
# Check for matches
|
13
|
+
matches = subclasses.each_with_object([]) do |interaction_class, result|
|
14
|
+
match = interaction_class.matches(node)
|
15
|
+
result << match if match
|
16
|
+
end
|
17
|
+
|
18
|
+
raise V2::UnsupportedSchema if matches.size > 1
|
19
|
+
|
20
|
+
matches.first
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'qti/v2/models/base'
|
2
|
+
require 'qti/v2/models/choices/simple_choice'
|
3
|
+
|
4
|
+
module Qti
|
5
|
+
module V2
|
6
|
+
module Models
|
7
|
+
module Interactions
|
8
|
+
class ChoiceInteraction < Qti::V2::Models::Base
|
9
|
+
NODE_NAME = 'choiceInteraction'.freeze
|
10
|
+
# This will know if a class matches
|
11
|
+
def self.matches(node)
|
12
|
+
matches = node.children.filter(INTERACTION_ELEMENTS_CSS).select { |n| n.name == NODE_NAME }
|
13
|
+
return false if matches.empty?
|
14
|
+
|
15
|
+
raise Qti::UnsupportedSchema if matches.size > 1
|
16
|
+
new(matches.first)
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize(node)
|
20
|
+
@node = node
|
21
|
+
end
|
22
|
+
|
23
|
+
def shuffled?
|
24
|
+
@node.attributes['shuffle'].value == 'true'
|
25
|
+
end
|
26
|
+
|
27
|
+
def answers
|
28
|
+
@answers ||= answer_nodes.map do |node|
|
29
|
+
V2::Models::Choices::SimpleChoice.new(node)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def max_choices_count
|
34
|
+
@node.attributes['maxChoices']&.value&.to_i
|
35
|
+
end
|
36
|
+
|
37
|
+
def min_choices_count
|
38
|
+
@node.attributes['minChoices']&.value&.to_i
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def answer_nodes
|
44
|
+
@node.children.filter('simpleChoice')
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
<?xml version="1.0" encoding="ISO-8859-1"?>
|
2
|
+
|
3
|
+
<questestinterop>
|
4
|
+
|
5
|
+
<assessment title="Quiz" ident="A1001">
|
6
|
+
<section title="Main" ident="S1002">
|
7
|
+
|
8
|
+
<item title="Discussion - content." ident="QUE_1022">
|
9
|
+
<presentation>
|
10
|
+
<material>
|
11
|
+
<mattext texttype="text/html"><![CDATA[A good discussion posting includes which of the following (select all that apply):]]></mattext>
|
12
|
+
</material>
|
13
|
+
<response_lid ident="QUE_1023_RL" rcardinality="Multiple" rtiming="No">
|
14
|
+
<render_choice>
|
15
|
+
<response_label ident="QUE_1024_A1">
|
16
|
+
<material>
|
17
|
+
<mattext texttype="text/html"><![CDATA[Poses a question or invites additional comment from others]]></mattext>
|
18
|
+
</material>
|
19
|
+
</response_label>
|
20
|
+
<response_label ident="QUE_1025_A2">
|
21
|
+
<material>
|
22
|
+
<mattext texttype="text/html"><![CDATA[Attacks another's post to generate controversy]]></mattext>
|
23
|
+
</material>
|
24
|
+
</response_label>
|
25
|
+
<response_label ident="QUE_1026_A3">
|
26
|
+
<material>
|
27
|
+
<mattext texttype="text/html"><![CDATA[Expresses an opinion which may be controversial so that others can agree or disagree]]></mattext>
|
28
|
+
</material>
|
29
|
+
</response_label>
|
30
|
+
<response_label ident="QUE_1027_A4">
|
31
|
+
<material>
|
32
|
+
<mattext texttype="text/html"><![CDATA[Adds information, ideas or suggestions that expand everyone's thinking about the topic]]></mattext>
|
33
|
+
</material>
|
34
|
+
</response_label>
|
35
|
+
<response_label ident="QUE_1028_A5">
|
36
|
+
<material>
|
37
|
+
<mattext texttype="text/html"><![CDATA[Reiterates the consensus or restates the ideas of others without adding independent thought]]></mattext>
|
38
|
+
</material>
|
39
|
+
</response_label>
|
40
|
+
<response_label ident="QUE_1029_A6">
|
41
|
+
<material>
|
42
|
+
<mattext texttype="text/html"><![CDATA[Provides non-specific praise for fellow learners like "good job" or "I loved your idea"]]></mattext>
|
43
|
+
</material>
|
44
|
+
</response_label>
|
45
|
+
<response_label ident="QUE_1030_A7">
|
46
|
+
<material>
|
47
|
+
<mattext texttype="text/html"><![CDATA[Responds positively to a person's comment and includes their name or quote from the original posting that supports your expanded idea]]></mattext>
|
48
|
+
</material>
|
49
|
+
</response_label>
|
50
|
+
</render_choice>
|
51
|
+
</response_lid>
|
52
|
+
</presentation>
|
53
|
+
<resprocessing>
|
54
|
+
<outcomes>
|
55
|
+
<decvar vartype="Decimal" defaultval="0" varname="que_score" maxvalue="10.00" minvalue="0"/>
|
56
|
+
</outcomes>
|
57
|
+
<respcondition>
|
58
|
+
<conditionvar>
|
59
|
+
<varequal respident="QUE_1023_RL">QUE_1024_A1</varequal>
|
60
|
+
</conditionvar>
|
61
|
+
<setvar varname="que_score" action="Add">25.00</setvar>
|
62
|
+
</respcondition>
|
63
|
+
<respcondition>
|
64
|
+
<conditionvar>
|
65
|
+
<varequal respident="QUE_1023_RL">QUE_1025_A2</varequal>
|
66
|
+
</conditionvar>
|
67
|
+
<setvar varname="que_score" action="Add">-10.00</setvar>
|
68
|
+
</respcondition>
|
69
|
+
<respcondition>
|
70
|
+
<conditionvar>
|
71
|
+
<varequal respident="QUE_1023_RL">QUE_1026_A3</varequal>
|
72
|
+
</conditionvar>
|
73
|
+
<setvar varname="que_score" action="Add">25.00</setvar>
|
74
|
+
</respcondition>
|
75
|
+
<respcondition>
|
76
|
+
<conditionvar>
|
77
|
+
<varequal respident="QUE_1023_RL">QUE_1027_A4</varequal>
|
78
|
+
</conditionvar>
|
79
|
+
<setvar varname="que_score" action="Add">25.00</setvar>
|
80
|
+
</respcondition>
|
81
|
+
<respcondition>
|
82
|
+
<conditionvar>
|
83
|
+
<varequal respident="QUE_1023_RL">QUE_1028_A5</varequal>
|
84
|
+
</conditionvar>
|
85
|
+
<setvar varname="que_score" action="Add">-10.00</setvar>
|
86
|
+
</respcondition>
|
87
|
+
<respcondition>
|
88
|
+
<conditionvar>
|
89
|
+
<varequal respident="QUE_1023_RL">QUE_1029_A6</varequal>
|
90
|
+
</conditionvar>
|
91
|
+
<setvar varname="que_score" action="Add">-10.00</setvar>
|
92
|
+
</respcondition>
|
93
|
+
<respcondition>
|
94
|
+
<conditionvar>
|
95
|
+
<varequal respident="QUE_1023_RL">QUE_1030_A7</varequal>
|
96
|
+
</conditionvar>
|
97
|
+
<setvar varname="que_score" action="Add">25.00</setvar>
|
98
|
+
</respcondition>
|
99
|
+
</resprocessing>
|
100
|
+
</item>
|
101
|
+
|
102
|
+
</section>
|
103
|
+
</assessment>
|
104
|
+
|
105
|
+
</questestinterop>
|
@@ -0,0 +1,83 @@
|
|
1
|
+
<?xml version="1.0" encoding="ISO-8859-1"?>
|
2
|
+
|
3
|
+
<questestinterop>
|
4
|
+
|
5
|
+
<assessment title="1.2 Import Quiz" ident="A1001">
|
6
|
+
<section title="Main" ident="S1002">
|
7
|
+
|
8
|
+
<item title="How much time each week?" ident="QUE_1007">
|
9
|
+
<presentation>
|
10
|
+
<material>
|
11
|
+
<mattext texttype="text/html"><![CDATA[How much time should you spend working on your online course each week in order to earn credit? <img align="bottom" alt="image.png" src="$IMS_CC_FILE_BASE$org1/images/image.png" border="0"/>]]></mattext>
|
12
|
+
</material>
|
13
|
+
<response_lid ident="QUE_1008_RL" rcardinality="Single" rtiming="No">
|
14
|
+
<render_choice>
|
15
|
+
<response_label ident="QUE_1009_A1">
|
16
|
+
<material>
|
17
|
+
<mattext texttype="text/html"><![CDATA[However long it takes]]></mattext>
|
18
|
+
</material>
|
19
|
+
</response_label>
|
20
|
+
<response_label ident="QUE_1010_A2">
|
21
|
+
<material>
|
22
|
+
<mattext texttype="text/html"><![CDATA[30 - 90 minutes]]></mattext>
|
23
|
+
</material>
|
24
|
+
</response_label>
|
25
|
+
<response_label ident="QUE_1011_A3">
|
26
|
+
<material>
|
27
|
+
<mattext texttype="text/html"><![CDATA[1 - 2 hours]]></mattext>
|
28
|
+
</material>
|
29
|
+
</response_label>
|
30
|
+
<response_label ident="QUE_1012_A4">
|
31
|
+
<material>
|
32
|
+
<mattext texttype="text/html"><![CDATA[At least 3 hours]]></mattext>
|
33
|
+
</material>
|
34
|
+
</response_label>
|
35
|
+
<response_label ident="QUE_1013_A5">
|
36
|
+
<material>
|
37
|
+
<mattext texttype="text/html"><![CDATA[6 or more hours]]></mattext>
|
38
|
+
</material>
|
39
|
+
</response_label>
|
40
|
+
</render_choice>
|
41
|
+
</response_lid>
|
42
|
+
</presentation>
|
43
|
+
<resprocessing>
|
44
|
+
<outcomes>
|
45
|
+
<decvar vartype="Decimal" defaultval="0" varname="que_score"/>
|
46
|
+
</outcomes>
|
47
|
+
<respcondition>
|
48
|
+
<conditionvar>
|
49
|
+
<varequal respident="QUE_1008_RL">QUE_1009_A1</varequal>
|
50
|
+
</conditionvar>
|
51
|
+
<setvar varname="que_score" action="Add">0</setvar>
|
52
|
+
</respcondition>
|
53
|
+
<respcondition>
|
54
|
+
<conditionvar>
|
55
|
+
<varequal respident="QUE_1008_RL">QUE_1010_A2</varequal>
|
56
|
+
</conditionvar>
|
57
|
+
<setvar varname="que_score" action="Add">0</setvar>
|
58
|
+
</respcondition>
|
59
|
+
<respcondition>
|
60
|
+
<conditionvar>
|
61
|
+
<varequal respident="QUE_1008_RL">QUE_1011_A3</varequal>
|
62
|
+
</conditionvar>
|
63
|
+
<setvar varname="que_score" action="Add">0</setvar>
|
64
|
+
</respcondition>
|
65
|
+
<respcondition>
|
66
|
+
<conditionvar>
|
67
|
+
<varequal respident="QUE_1008_RL">QUE_1012_A4</varequal>
|
68
|
+
</conditionvar>
|
69
|
+
<setvar varname="que_score" action="Set">10.00</setvar>
|
70
|
+
</respcondition>
|
71
|
+
<respcondition>
|
72
|
+
<conditionvar>
|
73
|
+
<varequal respident="QUE_1008_RL">QUE_1013_A5</varequal>
|
74
|
+
</conditionvar>
|
75
|
+
<setvar varname="que_score" action="Add">0</setvar>
|
76
|
+
</respcondition>
|
77
|
+
</resprocessing>
|
78
|
+
</item>
|
79
|
+
|
80
|
+
</section>
|
81
|
+
</assessment>
|
82
|
+
|
83
|
+
</questestinterop>
|
@@ -0,0 +1,50 @@
|
|
1
|
+
<?xml version="1.0" encoding="ISO-8859-1"?>
|
2
|
+
|
3
|
+
<questestinterop>
|
4
|
+
|
5
|
+
<assessment title="1.2 Import Quiz" ident="A1001">
|
6
|
+
<section title="Main" ident="S1002">
|
7
|
+
|
8
|
+
<item title="Grading - specific - 3 pt score" ident="QUE_1003">
|
9
|
+
<presentation>
|
10
|
+
<material>
|
11
|
+
<mattext texttype="text/html"><![CDATA[If I get a 3, I must have done something wrong. <img align="bottom" alt="image.png" src="org0/images/image.png" border="0"/>]]></mattext>
|
12
|
+
</material>
|
13
|
+
<response_lid ident="QUE_1004_RL" rcardinality="Single" rtiming="No">
|
14
|
+
<render_choice shuffle= "Yes">
|
15
|
+
<response_label ident="QUE_1005_A1">
|
16
|
+
<material>
|
17
|
+
<mattext texttype="text/html"><![CDATA[True]]></mattext>
|
18
|
+
</material>
|
19
|
+
</response_label>
|
20
|
+
<response_label ident="QUE_1006_A2">
|
21
|
+
<material>
|
22
|
+
<mattext texttype="text/html"><![CDATA[False]]></mattext>
|
23
|
+
</material>
|
24
|
+
</response_label>
|
25
|
+
</render_choice>
|
26
|
+
</response_lid>
|
27
|
+
</presentation>
|
28
|
+
<resprocessing>
|
29
|
+
<outcomes>
|
30
|
+
<decvar vartype="Decimal" defaultval="0" varname="que_score"/>
|
31
|
+
</outcomes>
|
32
|
+
<respcondition>
|
33
|
+
<conditionvar>
|
34
|
+
<varequal respident="QUE_1004_RL">QUE_1005_A1</varequal>
|
35
|
+
</conditionvar>
|
36
|
+
<setvar varname="que_score" action="Add">0</setvar>
|
37
|
+
</respcondition>
|
38
|
+
<respcondition>
|
39
|
+
<conditionvar>
|
40
|
+
<varequal respident="QUE_1004_RL">QUE_1006_A2</varequal>
|
41
|
+
</conditionvar>
|
42
|
+
<setvar varname="que_score" action="Set">10.00</setvar>
|
43
|
+
</respcondition>
|
44
|
+
</resprocessing>
|
45
|
+
</item>
|
46
|
+
|
47
|
+
</section>
|
48
|
+
</assessment>
|
49
|
+
|
50
|
+
</questestinterop>
|
@@ -0,0 +1,79 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!-- This item is a true/false question with modal feedback, adapted from the CC question QUE_102010.xml -->
|
3
|
+
<assessmentItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
4
|
+
xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p2 http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_v2p2.xsd"
|
5
|
+
xmlns="http://www.imsglobal.org/xsd/imsqti_v2p2" identifier="Example01-modalFeedback"
|
6
|
+
title="Example 1 - modal feedback" adaptive="false" timeDependent="false">
|
7
|
+
<responseDeclaration identifier="RESPONSE" cardinality="single" baseType="identifier">
|
8
|
+
|
9
|
+
<!--The response variable RESPONSE will hold the candidate's input-->
|
10
|
+
|
11
|
+
<correctResponse>
|
12
|
+
|
13
|
+
<!--The value of the right answer is declared-->
|
14
|
+
|
15
|
+
<value>true</value>
|
16
|
+
</correctResponse>
|
17
|
+
</responseDeclaration>
|
18
|
+
|
19
|
+
<!--Define a feedback variable; its baseType is "identifier" so that it can contain
|
20
|
+
the identifier of the feedback message-->
|
21
|
+
|
22
|
+
<outcomeDeclaration identifier="FEEDBACK" cardinality="single" baseType="identifier"/>
|
23
|
+
<outcomeDeclaration identifier="SCORE" cardinality="single" baseType="float"
|
24
|
+
normalMaximum="10.0">
|
25
|
+
<defaultValue>
|
26
|
+
<value>0</value>
|
27
|
+
</defaultValue>
|
28
|
+
</outcomeDeclaration>
|
29
|
+
<outcomeDeclaration identifier="MAXSCORE" cardinality="single" baseType="float">
|
30
|
+
<defaultValue>
|
31
|
+
<value>10.0</value>
|
32
|
+
</defaultValue>
|
33
|
+
</outcomeDeclaration>
|
34
|
+
<itemBody>
|
35
|
+
<choiceInteraction responseIdentifier="RESPONSE" shuffle="false" maxChoices="1">
|
36
|
+
<prompt>Sigmund Freud and Carl Jung both belong to the psychoanalytic school of
|
37
|
+
psychology.</prompt>
|
38
|
+
<simpleChoice identifier="true" fixed="true">True </simpleChoice>
|
39
|
+
<simpleChoice identifier="false" fixed="true">False </simpleChoice>
|
40
|
+
</choiceInteraction>
|
41
|
+
</itemBody>
|
42
|
+
<responseProcessing>
|
43
|
+
<responseCondition>
|
44
|
+
<responseIf>
|
45
|
+
<match>
|
46
|
+
|
47
|
+
<!--The value of RESPONSE is compared with the correct value identified
|
48
|
+
in the RESPONSE declaration-->
|
49
|
+
|
50
|
+
<variable identifier="RESPONSE"/>
|
51
|
+
<correct identifier="RESPONSE"/>
|
52
|
+
</match>
|
53
|
+
<setOutcomeValue identifier="SCORE">
|
54
|
+
<variable identifier="MAXSCORE"/>
|
55
|
+
</setOutcomeValue>
|
56
|
+
<setOutcomeValue identifier="FEEDBACK">
|
57
|
+
<baseValue baseType="identifier">correct</baseValue>
|
58
|
+
</setOutcomeValue>
|
59
|
+
</responseIf>
|
60
|
+
<responseElse>
|
61
|
+
|
62
|
+
<!--Depending on whether the input matches the correct answer or not, FEEDBACK
|
63
|
+
is given the value of the identifier of the appropriate feedback message-->
|
64
|
+
|
65
|
+
<setOutcomeValue identifier="FEEDBACK">
|
66
|
+
<baseValue baseType="identifier">incorrect</baseValue>
|
67
|
+
</setOutcomeValue>
|
68
|
+
</responseElse>
|
69
|
+
</responseCondition>
|
70
|
+
</responseProcessing>
|
71
|
+
|
72
|
+
<!-- Note how the identifiers in the following modalFeedback elements match those of the
|
73
|
+
setOutcomeValue elements above -->
|
74
|
+
|
75
|
+
<modalFeedback outcomeIdentifier="FEEDBACK" showHide="show" identifier="correct"
|
76
|
+
>correct</modalFeedback>
|
77
|
+
<modalFeedback outcomeIdentifier="FEEDBACK" showHide="show" identifier="incorrect"
|
78
|
+
>incorrect</modalFeedback>
|
79
|
+
</assessmentItem>
|