Question Document DTD File


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

<!ELEMENT question-document (topic+)>
<!ELEMENT topic (question+)>
<!ELEMENT question (question-message,question-part*,comment*,variable*,equation*,(strings* | integer* | questionnaire* | condition* | double? | text-answer?)+,wrong-answer-response?,helpfile)>
<!ELEMENT question-message (#PCDATA | image)*>
<!ELEMENT question-part (#PCDATA|image)*>
<!ELEMENT image EMPTY>
<!ELEMENT questionnaire (subanswerquestion)+>
<!ELEMENT sub-answer (#PCDATA | truth)*>
<!ELEMENT truth (#PCDATA)>
<!ELEMENT comment (#PCDATA)>
<!ELEMENT variable (set | random | fixed)+>
<!ELEMENT strings (string)+>
<!ELEMENT string  (#PCDATA)>
<!ELEMENT fixed (relation*, operation*)>
<!ELEMENT set (relation*, operation*)>
<!ELEMENT random (relation*, operation*)>
<!ELEMENT condition (if,then)>
<!ELEMENT operation (#PCDATA)>
<!ELEMENT relation (#PCDATA)>
<!ELEMENT if (#PCDATA)>
<!ELEMENT then (#PCDATA)>
<!ELEMENT equation  (#PCDATA)>
<!ELEMENT double  (#PCDATA)>
<!ELEMENT integer (#PCDATA)>
<!ELEMENT text-answer  (#PCDATA|display)*>
<!ELEMENT display  (#PCDATA)>
<!ELEMENT wrong-answer-response (#PCDATA)>
<!ELEMENT helpfile EMPTY>

<!ATTLIST topic         title  	 CDATA    #REQUIRED
                        name 	 CDATA    #REQUIRED
>
<!ATTLIST question-document	class  	 CDATA    #REQUIRED
		    	package   	 CDATA    #REQUIRED
		     	jsp    	 CDATA    #REQUIRED
>
<!ATTLIST question 	name	 CDATA    #REQUIRED
		    	 mark     CDATA    #REQUIRED
		    	 type   	 CDATA    #IMPLIED
        		optional ( optional | null) "null"
			awardPartMarks (false | true) "false"
>
<!ATTLIST question-part	part	 CDATA    #REQUIRED
			partMark CDATA	#IMPLIED
>
<!ATTLIST image	src    	 CDATA    #REQUIRED
		     	width   	 CDATA    #IMPLIED
		     	height  	 CDATA    #IMPLIED
>
<!ATTLIST string 	name    CDATA    #REQUIRED
		     	message CDATA    #IMPLIED
>
<!ATTLIST fixed  	name    CDATA    #REQUIRED
			value	CDATA    #REQUIRED		     
			type	(integer | double) "integer"
		     	message CDATA    #IMPLIED
>
<!ATTLIST set  		name    CDATA    #REQUIRED
			values	CDATA    #REQUIRED		     
			type	(integer | double) "integer"
		     	message CDATA    #IMPLIED
>
<!ATTLIST random 	low	CDATA    #REQUIRED		     
			name    CDATA    #REQUIRED
		    	high	CDATA    #REQUIRED		     
		    	step	CDATA    #REQUIRED		     
			type	(integer | double) "integer"
		    	exclude	CDATA    #IMPLIED		     
		     	message CDATA    #IMPLIED
>
<!ATTLIST parameter  	name    CDATA    #IMPLIED
		    	value	CDATA    #REQUIRED		     
>
<!ATTLIST integer   	units   	CDATA    #REQUIRED
		    	part	CDATA    #REQUIRED		     
			precisionPercent	CDATA    #IMPLIED
			showAnswer (false | true) "true"
>
<!ATTLIST double   	units   	CDATA    #REQUIRED
		    	part	CDATA    #REQUIRED		     
		    	precisionPower	CDATA    #IMPLIED		     
			precisionPercent	CDATA    #IMPLIED
			showAnswer (false | true) "true"
>
<!ATTLIST text-answer  	part    CDATA    #REQUIRED
		    	units		CDATA    #IMPLIED		     
			showAnswer (false | true) "true"
>
<!ATTLIST questionnaire	part    CDATA    #REQUIRED
			showAnswer (false | true) "true"
>
<!ATTLIST helpfile   	name    CDATA    #REQUIRED
>
<!ATTLIST truth
        value ( true | false) "false"
	ref NMTOKEN #REQUIRED
>
        
      

Figure 2. The Question Document DTD