User:Miriya52/week10

Refer to project glossary for acronyms and definitions. Week 10: February 6 - 10

Objectives

 * Parse basic question
 * Parse more types and more complicated questions
 * Validation checks to reject illegal inputs

Summary

 * Successfully parses basic well-formed question. See test_element unittest.
 * In progress for development of validation checks with schema, adding true/false type, and reading a file into the structures.

Adding validation check to GIFT parser
For the XML format, a schema is defined to verify well-formedness and validity of an input. I am looking into how to integrate this for the GIFT parser.

GIFT basic question: //comment ::Question title ::Question{ =A correct answer ~Wrong answer1 ~Wrong answer2 ~Wrong answer3 }

simple elements defined as:  where xxx is the name of the element and yyy is the data type of the element.

Proposed XSD schema
         

Unless defined as a "sequence" or "group", the sequence of elements doesn't matter. Sequence is "questionTitle", "question", then *Responses are in order; however inside the *Response elements complexType, it should be able to occur in any sequence. Need to see if this definition works.

Eventually, I want to include feedback in the responses as follows:      <xs:sequence> <xs:element name="value" type="xs:string"/> <xs:element name="feedback" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element name="correctResponse"> <xs:element name="wrongResponse" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="value" type="xs:string"/> <xs:element name="feedback" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element name="wrongResponse"> </xs:schema>

Adding True/False type
I am working on parsing true/false. See test_true_false.

That is a valid Moodle GIFT format. The issue is that until the parser gets to last brackets '{T}', it's not apparent that it is a true/false vs multiple choice. In multiple choice, = is that tag for a correct response. So I think the parser logic needs to be modified to take in the whole question, and then identify what type of question it is. That would be a different parser logic than the pyslet XML parser which an rely on tags.

Reading in a Document
I am working on reading in readFile.txt. See unittest test_document; ignore the assert tests for now, the first element should be "Question title". However, when I call Document.read, it does read the file, but ends up with only one element in the tree "Wrong answer3".

Plan for next week

 * Redesign parser to buffer the whole question, and then parse to the different child elements
 * Keep debugging!