<?xml version='1.0' encoding='UTF-8' ?>

<!--Generated by Turbo XML 2.3.1.100.-->

<!--	*******************************************************		-->
<!--																-->
<!--	TITLE:		ims_qtiasiv1p2p1.dtd							-->
<!--	TYPE:		IMS Question and Test Interoperability			-->
<!--				Assessment, Section, Item structure	and			-->
<!--				Objects-bank.									-->
<!--																-->
<!--	REVISION HISTORY:											-->
<!--	Date	        Author										-->
<!--	====	        ======										-->
<!--	14th Feb 2003	Colin Smythe								-->
<!--																-->
<!--	This specification has been approved as a Final release.	-->
<!--																-->
<!--	+++++++++++++++++++++++++++++++++++++++++++++++++++++++		-->
<!--	*******************************************************		-->
<!--					ROOT DEFINITION								-->
<!--	*******************************************************		-->
<!ELEMENT questestinterop (qticomment? , (objectbank | assessment | (section | item)+))>

<!--	+++++++++++++++++++++++++++++++++++++++++++++++++++++++		-->
<!--	*******************************************************		-->
<!--					ENTITY DEFINITIONS							-->
<!--	*******************************************************		-->
<!ENTITY % I_Testoperator " testoperator  (EQ | NEQ | LT | LTE | GT | GTE )  #REQUIRED">

<!ENTITY % I_Pname " pname CDATA  #REQUIRED">

<!ENTITY % I_Class " class CDATA  'Block'">

<!ENTITY % I_Mdoperator " mdoperator  (EQ | NEQ | LT | LTE | GT | GTE )  #REQUIRED">

<!ENTITY % I_Mdname " mdname CDATA  #REQUIRED">

<!ENTITY % I_Title " title CDATA  #IMPLIED">

<!ENTITY % I_Label " label CDATA  #IMPLIED">

<!ENTITY % I_Ident " ident CDATA  #REQUIRED">

<!ENTITY % I_View " view  (All | 
          Administrator | 
          AdminAuthority | 
          Assessor | 
          Author | 
          Candidate | 
          InvigilatorProctor | 
          Psychometrician | 
          Scorer | 
          Tutor )  'All'">

<!ENTITY % I_FeedbackSwitch " feedbackswitch  (Yes | No )  'Yes'">

<!ENTITY % I_HintSwitch " hintswitch  (Yes | No )  'Yes'">

<!ENTITY % I_SolutionSwitch " solutionswitch  (Yes | No )  'Yes'">

<!ENTITY % I_Rcardinality " rcardinality  (Single | Multiple | Ordered )  'Single'">

<!ENTITY % I_Rtiming " rtiming  (Yes | No )  'No'">

<!ENTITY % I_Uri " uri CDATA  #IMPLIED">

<!ENTITY % I_X0 " x0 CDATA  #IMPLIED">

<!ENTITY % I_Y0 " y0 CDATA  #IMPLIED">

<!ENTITY % I_Height " height CDATA  #IMPLIED">

<!ENTITY % I_Width " width CDATA  #IMPLIED">

<!ENTITY % I_Embedded " embedded CDATA  'base64'">

<!ENTITY % I_LinkRefId " linkrefid CDATA  #REQUIRED">

<!ENTITY % I_VarName " varname CDATA  'SCORE'">

<!ENTITY % I_RespIdent " respident CDATA  #REQUIRED">

<!ENTITY % I_Continue " continue  (Yes | No )  'No'">

<!ENTITY % I_CharSet " charset CDATA  'ascii-us'">

<!ENTITY % I_ScoreModel " scoremodel CDATA  #IMPLIED">

<!ENTITY % I_MinNumber " minnumber CDATA  #IMPLIED">

<!ENTITY % I_MaxNumber " maxnumber CDATA  #IMPLIED">

<!ENTITY % I_FeedbackStyle " feedbackstyle  (Complete | Incremental | Multilevel | Proprietary )  'Complete'">

<!ENTITY % I_Case " case  (Yes | No )  'No'">

<!ENTITY % I_EntityRef " entityref ENTITY  #IMPLIED">

<!ENTITY % I_Index " index CDATA  #IMPLIED">

<!ELEMENT qmd_computerscored (#PCDATA)>

<!ELEMENT qmd_feedbackpermitted (#PCDATA)>

<!ELEMENT qmd_hintspermitted (#PCDATA)>

<!ELEMENT qmd_itemtype (#PCDATA)>

<!ELEMENT qmd_maximumscore (#PCDATA)>

<!ELEMENT qmd_renderingtype (#PCDATA)>

<!ELEMENT qmd_responsetype (#PCDATA)>

<!ELEMENT qmd_scoringpermitted (#PCDATA)>

<!ELEMENT qmd_solutionspermitted (#PCDATA)>

<!ELEMENT qmd_status (#PCDATA)>

<!ELEMENT qmd_timedependence (#PCDATA)>

<!ELEMENT qmd_timelimit (#PCDATA)>

<!ELEMENT qmd_toolvendor (#PCDATA)>

<!ELEMENT qmd_topic (#PCDATA)>

<!ELEMENT qmd_material (#PCDATA)>

<!ELEMENT qmd_typeofsolution (#PCDATA)>

<!ELEMENT qmd_levelofdifficulty (#PCDATA)>

<!ELEMENT qmd_weighting (#PCDATA)>

<!ELEMENT qtimetadata (vocabulary? , qtimetadatafield+)>

<!ELEMENT vocabulary (#PCDATA)>

<!ATTLIST vocabulary  %I_Uri;
                       %I_EntityRef;
                       vocab_type  CDATA  #IMPLIED >
<!ELEMENT qtimetadatafield (fieldlabel , fieldentry)>

<!ATTLIST qtimetadatafield  xml:lang CDATA  #IMPLIED >
<!ELEMENT fieldlabel (#PCDATA)>

<!ELEMENT fieldentry (#PCDATA)>

<!--	+++++++++++++++++++++++++++++++++++++++++++++++++++++++		-->
<!--	*******************************************************		-->
<!--				COMMON OBJECT DEFINITIONS						-->
<!--	*******************************************************		-->
<!ELEMENT qticomment (#PCDATA)>

<!ATTLIST qticomment  xml:lang CDATA  #IMPLIED >
<!ELEMENT material (qticomment? , (mattext | matemtext | matimage | mataudio | matvideo | matapplet | matapplication | matref | matbreak | mat_extension)+ , altmaterial*)>

<!ATTLIST material  %I_Label;
                     xml:lang CDATA  #IMPLIED >
<!ELEMENT mattext (#PCDATA)>

<!ATTLIST mattext  texttype    CDATA  'text/plain'
                    %I_Label;
                    %I_CharSet;
                    %I_Uri;
                    xml:space    (preserve | default )  'default'
                    xml:lang    CDATA  #IMPLIED
                    %I_EntityRef;
                    %I_Width;
                    %I_Height;
                    %I_Y0;
                    %I_X0; >
<!ELEMENT matemtext (#PCDATA)>

<!ATTLIST matemtext  texttype    CDATA  'text/plain'
                      %I_Label;
                      %I_CharSet;
                      %I_Uri;
                      xml:space    (preserve | default )  'default'
                      xml:lang    CDATA  #IMPLIED
                      %I_EntityRef;
                      %I_Width;
                      %I_Height;
                      %I_Y0;
                      %I_X0; >
<!ELEMENT matimage (#PCDATA)>

<!ATTLIST matimage  imagtype    CDATA  'image/jpeg'
                     %I_Label;
                     %I_Height;
                     %I_Uri;
                     %I_Embedded;
                     %I_Width;
                     %I_Y0;
                     %I_X0;
                     %I_EntityRef; >
<!ELEMENT mataudio (#PCDATA)>

<!ATTLIST mataudio  audiotype   CDATA  'audio/base'
                     %I_Label;
                     %I_Uri;
                     %I_Embedded;
                     %I_EntityRef; >
<!ELEMENT matvideo (#PCDATA)>

<!ATTLIST matvideo  videotype   CDATA  'video/avi'
                     %I_Label;
                     %I_Uri;
                     %I_Width;
                     %I_Height;
                     %I_Y0;
                     %I_X0;
                     %I_Embedded;
                     %I_EntityRef; >
<!ELEMENT matapplet (#PCDATA)>

<!ATTLIST matapplet  %I_Label;
                      %I_Uri;
                      %I_Y0;
                      %I_Height;
                      %I_Width;
                      %I_X0;
                      %I_Embedded;
                      %I_EntityRef; >
<!ELEMENT matapplication (#PCDATA)>

<!ATTLIST matapplication  apptype     CDATA  #IMPLIED
                           %I_Label;
                           %I_Uri;
                           %I_Embedded;
                           %I_EntityRef; >
<!ELEMENT matbreak EMPTY>

<!ELEMENT matref EMPTY>

<!ATTLIST matref  %I_LinkRefId; >
<!ELEMENT material_ref EMPTY>

<!ATTLIST material_ref  %I_LinkRefId; >
<!ELEMENT altmaterial (qticomment? , (mattext | matemtext | matimage | mataudio | matvideo | matapplet | matapplication | matref | matbreak | mat_extension)+)>

<!ATTLIST altmaterial  xml:lang CDATA  #IMPLIED >
<!ELEMENT decvar (#PCDATA)>

<!ATTLIST decvar  %I_VarName;
                   vartype     (Integer | 
                                String | 
                                Decimal | 
                                Scientific | 
                                Boolean | 
                                Enumerated | 
                                Set )  'Integer'
                   defaultval CDATA  #IMPLIED
                   minvalue   CDATA  #IMPLIED
                   maxvalue   CDATA  #IMPLIED
                   members    CDATA  #IMPLIED
                   cutvalue   CDATA  #IMPLIED >
<!ELEMENT setvar (#PCDATA)>

<!ATTLIST setvar  %I_VarName;
                   action     (Set | Add | Subtract | Multiply | Divide )  'Set' >
<!ELEMENT interpretvar (material | material_ref)>

<!ATTLIST interpretvar  %I_View;
                         %I_VarName; >
<!ELEMENT conditionvar (not | and | or | unanswered | other | varequal | varlt | varlte | vargt | vargte | varsubset | varinside | varsubstring | durequal | durlt | durlte | durgt | durgte | var_extension)+>

<!ELEMENT not (and | or | not | unanswered | other | varequal | varlt | varlte | vargt | vargte | varsubset | varinside | varsubstring | durequal | durlt | durlte | durgt | durgte)>

<!ELEMENT and (not | and | or | unanswered | other | varequal | varlt | varlte | vargt | vargte | varsubset | varinside | varsubstring | durequal | durlt | durlte | durgt | durgte)+>

<!ELEMENT or (not | and | or | unanswered | other | varequal | varlt | varlte | vargt | vargte | varsubset | varinside | varsubstring | durequal | durlt | durlte | durgt | durgte)+>

<!ELEMENT varequal (#PCDATA)>

<!ATTLIST varequal  %I_Case;
                     %I_RespIdent;
                     %I_Index; >
<!ELEMENT varlt (#PCDATA)>

<!ATTLIST varlt  %I_RespIdent;
                  %I_Index; >
<!ELEMENT varlte (#PCDATA)>

<!ATTLIST varlte  %I_RespIdent;
                   %I_Index; >
<!ELEMENT vargt (#PCDATA)>

<!ATTLIST vargt  %I_RespIdent;
                  %I_Index; >
<!ELEMENT vargte (#PCDATA)>

<!ATTLIST vargte  %I_RespIdent;
                   %I_Index; >
<!ELEMENT varsubset (#PCDATA)>

<!ATTLIST varsubset  %I_RespIdent;
                      setmatch     (Exact | Partial )  'Exact'
                      %I_Index; >
<!ELEMENT varinside (#PCDATA)>

<!ATTLIST varinside  areatype     (Ellipse | Rectangle | Bounded )  #REQUIRED
                      %I_RespIdent;
                      %I_Index; >
<!ELEMENT varsubstring (#PCDATA)>

<!ATTLIST varsubstring  %I_Index;
                         %I_RespIdent;
                         %I_Case; >
<!ELEMENT durequal (#PCDATA)>

<!ATTLIST durequal  %I_Index;
                     %I_RespIdent; >
<!ELEMENT durlt (#PCDATA)>

<!ATTLIST durlt  %I_Index;
                  %I_RespIdent; >
<!ELEMENT durlte (#PCDATA)>

<!ATTLIST durlte  %I_Index;
                   %I_RespIdent; >
<!ELEMENT durgt (#PCDATA)>

<!ATTLIST durgt  %I_Index;
                  %I_RespIdent; >
<!ELEMENT durgte (#PCDATA)>

<!ATTLIST durgte  %I_Index;
                   %I_RespIdent; >
<!ELEMENT unanswered (#PCDATA)>

<!ATTLIST unanswered  %I_RespIdent; >
<!ELEMENT other (#PCDATA)>

<!ELEMENT duration (#PCDATA)>

<!ELEMENT displayfeedback (#PCDATA)>

<!ATTLIST displayfeedback  feedbacktype  (Response | Solution | Hint )  'Response'
                            %I_LinkRefId; >
<!ELEMENT objectives (qticomment? , (material+ | flow_mat+))>

<!ATTLIST objectives  %I_View; >
<!ELEMENT rubric (qticomment? , (material+ | flow_mat+))>

<!ATTLIST rubric  %I_View; >
<!ELEMENT flow_mat (qticomment? , (flow_mat | material | material_ref)+)>

<!ATTLIST flow_mat  %I_Class; >
<!ELEMENT presentation_material (qticomment? , flow_mat+)>

<!ELEMENT reference (qticomment? , (material | mattext | matemtext | matimage | mataudio | matvideo | matapplet | matapplication | matbreak | mat_extension)+)>

<!ELEMENT selection_ordering (qticomment? , sequence_parameter* , selection* , order?)>

<!ATTLIST selection_ordering  sequence_type CDATA  #IMPLIED >
<!ELEMENT outcomes_processing (qticomment? , outcomes , objects_condition* , processing_parameter* , map_output* , outcomes_feedback_test*)>

<!ATTLIST outcomes_processing  %I_ScoreModel; >
<!--	+++++++++++++++++++++++++++++++++++++++++++++++++++++++		-->
<!--	*******************************************************		-->
<!--					EXTENSION DEFINITIONS						-->
<!--	*******************************************************		-->
<!ELEMENT mat_extension ANY>

<!ELEMENT var_extension ANY>

<!ELEMENT response_extension ANY>

<!ELEMENT render_extension ANY>

<!ELEMENT assessproc_extension ANY>

<!ELEMENT sectionproc_extension ANY>

<!ELEMENT itemproc_extension ANY>

<!ELEMENT respcond_extension ANY>

<!ELEMENT selection_extension ANY>

<!ELEMENT objectscond_extension (#PCDATA)>

<!ELEMENT order_extension ANY>

<!--	+++++++++++++++++++++++++++++++++++++++++++++++++++++++		-->
<!--	*******************************************************		-->
<!--				OBJECT-BANK OBJECT DEFINITIONS					-->
<!--	*******************************************************		-->
<!ELEMENT objectbank (qticomment? , qtimetadata* , (section | item)+)>

<!ATTLIST objectbank  %I_Ident; >
<!--	+++++++++++++++++++++++++++++++++++++++++++++++++++++++		-->
<!--	*******************************************************		-->
<!--				ASSESSMENT OBJECT DEFINITIONS					-->
<!--	*******************************************************		-->
<!ELEMENT assessment (qticomment? , duration? , qtimetadata* , objectives* , assessmentcontrol* , rubric* , presentation_material? , outcomes_processing* , assessproc_extension? , assessfeedback* , selection_ordering? , reference? , (sectionref | section)+)>

<!ATTLIST assessment  %I_Ident;
                       %I_Title;
                       xml:lang CDATA  #IMPLIED >
<!ELEMENT assessmentcontrol (qticomment?)>

<!ATTLIST assessmentcontrol  %I_HintSwitch;
                              %I_SolutionSwitch;
                              %I_View;
                              %I_FeedbackSwitch; >
<!ELEMENT assessfeedback (qticomment? , (material+ | flow_mat+))>

<!ATTLIST assessfeedback  %I_View;
                           %I_Ident;
                           %I_Title; >
<!ELEMENT sectionref (#PCDATA)>

<!ATTLIST sectionref  %I_LinkRefId; >
<!--	+++++++++++++++++++++++++++++++++++++++++++++++++++++++		-->
<!--	*******************************************************		-->
<!--				SECTION OBJECT DEFINITIONS						-->
<!--	*******************************************************		-->
<!ELEMENT section (qticomment? , duration? , qtimetadata* , objectives* , sectioncontrol* , sectionprecondition* , sectionpostcondition* , rubric* , presentation_material? , outcomes_processing* , sectionproc_extension? , sectionfeedback* , selection_ordering? , reference? , (itemref | item | sectionref | section)*)>

<!ATTLIST section  %I_Ident;
                    %I_Title;
                    xml:lang CDATA  #IMPLIED >
<!ELEMENT sectionprecondition (#PCDATA)>

<!ELEMENT sectionpostcondition (#PCDATA)>

<!ELEMENT sectioncontrol (qticomment?)>

<!ATTLIST sectioncontrol  %I_FeedbackSwitch;
                           %I_HintSwitch;
                           %I_SolutionSwitch;
                           %I_View; >
<!ELEMENT itemref (#PCDATA)>

<!ATTLIST itemref  %I_LinkRefId; >
<!ELEMENT sectionfeedback (qticomment? , (material+ | flow_mat+))>

<!ATTLIST sectionfeedback  %I_View;
                            %I_Ident;
                            %I_Title; >
<!--	+++++++++++++++++++++++++++++++++++++++++++++++++++++++		-->
<!--	*******************************************************		-->
<!--					ITEM OBJECT DEFINITIONS						-->
<!--	*******************************************************		-->
<!ELEMENT item (qticomment? , duration? , itemmetadata? , objectives* , itemcontrol* , itemprecondition* , itempostcondition* , (itemrubric | rubric)* , presentation? , resprocessing* , itemproc_extension? , itemfeedback* , reference?)>

<!ATTLIST item  maxattempts CDATA  #IMPLIED
                 %I_Label;
                 %I_Ident;
                 %I_Title;
                 xml:lang    CDATA  #IMPLIED >
<!ELEMENT itemmetadata (qtimetadata* , qmd_computerscored? , qmd_feedbackpermitted? , qmd_hintspermitted? , qmd_itemtype? , qmd_levelofdifficulty? , qmd_maximumscore? , qmd_renderingtype* , qmd_responsetype* , qmd_scoringpermitted? , qmd_solutionspermitted? , qmd_status? , qmd_timedependence? , qmd_timelimit? , qmd_toolvendor? , qmd_topic? , qmd_weighting? , qmd_material* , qmd_typeofsolution?)>

<!ELEMENT itemcontrol (qticomment?)>

<!ATTLIST itemcontrol  %I_FeedbackSwitch;
                        %I_HintSwitch;
                        %I_SolutionSwitch;
                        %I_View; >
<!ELEMENT itemprecondition (#PCDATA)>

<!ELEMENT itempostcondition (#PCDATA)>

<!ELEMENT itemrubric (material)>

<!ATTLIST itemrubric  %I_View; >
<!ELEMENT presentation (qticomment? , (flow | (material | response_lid | response_xy | response_str | response_num | response_grp | response_extension)+))>

<!ATTLIST presentation  %I_Label;
                         xml:lang CDATA  #IMPLIED
                         %I_Y0;
                         %I_X0;
                         %I_Width;
                         %I_Height; >
<!ELEMENT flow (qticomment? , (flow | material | material_ref | response_lid | response_xy | response_str | response_num | response_grp | response_extension)+)>

<!ATTLIST flow  %I_Class; >
<!ELEMENT response_lid ((material | material_ref)? , (render_choice | render_hotspot | render_slider | render_fib | render_extension) , (material | material_ref)?)>

<!ATTLIST response_lid  %I_Rcardinality;
                         %I_Rtiming;
                         %I_Ident; >
<!ELEMENT response_xy ((material | material_ref)? , (render_choice | render_hotspot | render_slider | render_fib | render_extension) , (material | material_ref)?)>

<!ATTLIST response_xy  %I_Rcardinality;
                        %I_Rtiming;
                        %I_Ident; >
<!ELEMENT response_str ((material | material_ref)? , (render_choice | render_hotspot | render_slider | render_fib | render_extension) , (material | material_ref)?)>

<!ATTLIST response_str  %I_Rcardinality;
                         %I_Ident;
                         %I_Rtiming; >
<!ELEMENT response_num ((material | material_ref)? , (render_choice | render_hotspot | render_slider | render_fib | render_extension) , (material | material_ref)?)>

<!ATTLIST response_num  numtype         (Integer | Decimal | Scientific )  'Integer'
                         %I_Rcardinality;
                         %I_Ident;
                         %I_Rtiming; >
<!ELEMENT response_grp ((material | material_ref)? , (render_choice | render_hotspot | render_slider | render_fib | render_extension) , (material | material_ref)?)>

<!ATTLIST response_grp  %I_Rcardinality;
                         %I_Ident;
                         %I_Rtiming; >
<!ELEMENT response_label (#PCDATA | qticomment | material | material_ref | flow_mat)*>

<!ATTLIST response_label  rshuffle     (Yes | No )  'Yes'
                           rarea        (Ellipse | Rectangle | Bounded )  'Ellipse'
                           rrange       (Exact | Range )  'Exact'
                           labelrefid  CDATA  #IMPLIED
                           %I_Ident;
                           match_group CDATA  #IMPLIED
                           match_max   CDATA  #IMPLIED >
<!ELEMENT flow_label (qticomment? , (flow_label | response_label)+)>

<!ATTLIST flow_label  %I_Class; >
<!ELEMENT response_na ANY>

<!ELEMENT render_choice ((material | material_ref | response_label | flow_label)* , response_na?)>

<!ATTLIST render_choice  shuffle      (Yes | No )  'No'
                          %I_MinNumber;
                          %I_MaxNumber; >
<!ELEMENT render_hotspot ((material | material_ref | response_label | flow_label)* , response_na?)>

<!ATTLIST render_hotspot  %I_MaxNumber;
                           %I_MinNumber;
                           showdraw     (Yes | No )  'No' >
<!ELEMENT render_slider ((material | material_ref | response_label | flow_label)* , response_na?)>

<!ATTLIST render_slider  orientation  (Horizontal | Vertical )  'Horizontal'
                          lowerbound  CDATA  #REQUIRED
                          upperbound  CDATA  #REQUIRED
                          step        CDATA  #IMPLIED
                          startval    CDATA  #IMPLIED
                          steplabel    (Yes | No )  'No'
                          %I_MaxNumber;
                          %I_MinNumber; >
<!ELEMENT render_fib ((material | material_ref | response_label | flow_label)* , response_na?)>

<!ATTLIST render_fib  encoding    CDATA  'UTF_8'
                       fibtype      (String | Integer | Decimal | Scientific )  'String'
                       rows        CDATA  #IMPLIED
                       maxchars    CDATA  #IMPLIED
                       prompt       (Box | Dashline | Asterisk | Underline )  #IMPLIED
                       columns     CDATA  #IMPLIED
                       %I_CharSet;
                       %I_MaxNumber;
                       %I_MinNumber; >
<!ELEMENT resprocessing (qticomment? , outcomes , (respcondition | itemproc_extension)+)>

<!ATTLIST resprocessing  %I_ScoreModel; >
<!ELEMENT outcomes (qticomment? , (decvar , interpretvar*)+)>

<!ELEMENT respcondition (qticomment? , conditionvar , setvar* , displayfeedback* , respcond_extension?)>

<!ATTLIST respcondition  %I_Continue;
                          %I_Title; >
<!ELEMENT itemfeedback ((flow_mat | material) | solution | hint)+>

<!ATTLIST itemfeedback  %I_View;
                         %I_Ident;
                         %I_Title; >
<!ELEMENT solution (qticomment? , solutionmaterial+)>

<!ATTLIST solution  %I_FeedbackStyle; >
<!ELEMENT solutionmaterial (material+ | flow_mat+)>

<!ELEMENT hint (qticomment? , hintmaterial+)>

<!ATTLIST hint  %I_FeedbackStyle; >
<!ELEMENT hintmaterial (material+ | flow_mat+)>

<!--	+++++++++++++++++++++++++++++++++++++++++++++++++++++++		-->
<!--	*******************************************************		-->
<!--		SELECTION AND ORDERING OBJECT DEFINITIONS				-->
<!--	*******************************************************		-->
<!ELEMENT selection (sourcebank_ref? , selection_number? , selection_metadata? , (and_selection | or_selection | not_selection | selection_extension)?)>

<!ELEMENT order (order_extension?)>

<!ATTLIST order  order_type CDATA  #REQUIRED >
<!ELEMENT selection_number (#PCDATA)>

<!ELEMENT selection_metadata (#PCDATA)>

<!ATTLIST selection_metadata  %I_Mdname;
                               %I_Mdoperator; >
<!ELEMENT sequence_parameter (#PCDATA)>

<!ATTLIST sequence_parameter  %I_Pname; >
<!ELEMENT sourcebank_ref (#PCDATA)>

<!ELEMENT and_selection (selection_metadata | and_selection | or_selection | not_selection)+>

<!ELEMENT or_selection (selection_metadata | and_selection | or_selection | not_selection)+>

<!ELEMENT not_selection (selection_metadata | and_selection | or_selection | not_selection)>

<!--	+++++++++++++++++++++++++++++++++++++++++++++++++++++++		-->
<!--	*******************************************************		-->
<!--			OUTCOMES PREOCESSING OBJECT DEFINITIONS				-->
<!--	*******************************************************		-->
<!ELEMENT objects_condition (qticomment? , (outcomes_metadata | and_objects | or_objects | not_objects)? , objects_parameter* , map_input* , objectscond_extension?)>

<!ELEMENT map_output (#PCDATA)>

<!ATTLIST map_output  %I_VarName; >
<!ELEMENT map_input (#PCDATA)>

<!ATTLIST map_input  %I_VarName; >
<!ELEMENT outcomes_feedback_test (test_variable , displayfeedback+)>

<!ATTLIST outcomes_feedback_test  %I_Title; >
<!ELEMENT outcomes_metadata (#PCDATA)>

<!ATTLIST outcomes_metadata  %I_Mdname;
                              %I_Mdoperator; >
<!ELEMENT and_objects (outcomes_metadata | and_objects | or_objects | not_objects)+>

<!ELEMENT or_objects (outcomes_metadata | and_objects | or_objects | not_objects)+>

<!ELEMENT not_objects (outcomes_metadata | and_objects | or_objects | not_objects)>

<!ELEMENT test_variable (variable_test | and_test | or_test | not_test)>

<!ELEMENT processing_parameter (#PCDATA)>

<!ATTLIST processing_parameter  %I_Pname; >
<!ELEMENT and_test (variable_test | and_test | or_test | not_test)+>

<!ELEMENT or_test (variable_test | and_test | or_test | not_test)+>

<!ELEMENT not_test (variable_test | and_test | or_test | not_test)>

<!ELEMENT variable_test (#PCDATA)>

<!ATTLIST variable_test  %I_VarName;
                          %I_Testoperator; >
<!ELEMENT objects_parameter (#PCDATA)>

<!ATTLIST objects_parameter  %I_Pname; >
