[Cache from http://cvs.seul.org/~vernier/teresa/Thesis.html; please use this canonical URL/source if possible.]


DEVELOPMENT AND TESTING OF A STANDARDIZED FORMAT FOR DISTRIBUTED LEARNING ASSESSMENT AND EVALUATION USING XML

By

TERESA FERRANDEZ
B.S.C.E., University of Dalarna, 1997

A thesis submitted in partial fulfillment of the requirements for the degree of
Master of Science in Computer Engineering
in the Department of Electrical and Computer Engineering
in the College of Engineering
at the University of Central Florida
Orlando, Florida


Fall Term
1998



ABSTRACT

This document presents development of a markup language created to enable instructors to share instructional material. The language is developed as an Extensible Markup Language (XML), and it is intended to be used as a common file format for Internet distance learning tools. The markup language can model the information of an entire course but the research has been focused towards creating a markup language for requirements of questions and quizzes.
The Instructional Management Systems (IMS) project group, a research group focused on distance learning over the Internet, has defined a set of requirements for distance learning tools. The markup language developed for this thesis complies with these requirements and thus, any distance learning tool using this markup language will also comply with these standards.
Apart from the markup language, a set of tools has also been developed to save the information stored in the XML files to a content server. The overall objective of the content server is to allow users to share materials amongst different classes and sets of users.


2

ACKNOWLEDGEMENTS

I would to express my sincere appreciation to those people whose guidance assisted me in the completion of this thesis. Foremost, I would like to thank Dr. Eaglin for his support and encouragement, and Dr. Bauer for serving as my advisor. I would also like to express my gratitude to Dr. Linton and Dr. Klee for serving on my committee.
I would also like to thank my fianc Lars Norlander for being patient with my neglected domestic chores, and most of all, for always being there to offer support when I needed
it.


3

TABLE OF CONTENTS

LIST OF FIGURES    
LIST OF TABLES  
CHAPTER 1       INTRODUCTION    

1.1     Problem statement       
1.2     Thesis purpose and organization 
1.3     General approach to problem     
1.4     Distance learning tools on the Internet 
1.4.1   WebCT   
1.4.2   CyberProf       

1.5     Related work    
1.5.1   Distance Learning Database      
1.5.2   WebCT filter    

CHAPTER 2       IMS - Instructional metadata systems    

2.1     IMS Specifications for Distance Learning        
2.2     Usage of the IMS Specification in this implementation   
CHAPTER 3       xml     

3.1.1   Background      
3.1.2   Intention of XML        
3.1.3   Future  
3.1.4   XML Details     
4

3.2     Other Applications that use XML 
   3.2.1 Math ML        
3.2.2   Music ML        
3.2.3   Microsoft Office        

3.3     General XML design considerations       
3.3.1   Attributes vs. Elements 

3.4     DTD vs. Schema  
3.4.1   DTD Overview    
3.4.2   Schema Overview 
3.4.3   Conclusion      

3.5     Rendering XML files using XSL   
3.5.1   Overview of XSL 
3.5.2   Possibilities and limitations   
3.5.3   Possible uses for XSL's with SATML      

3.6     XML and security issues 
CHAPTER 4       development of satml    

4.1     Review of similar XML initiatives       
4.1.1   QML (Question Markup Languge)   
4.1.2   QML (Quiz Markup Language)      
4.1.3   QuizzIT 
4.1.4   TML (Tutorial Markup Language)  
4.1.5   Instructional Management Systems (IMS)  

4.2     Overview of Stored Information  
4.3     SATML design    
4.3.1   Course Information      
4.3.2   Assignments     
4.3.3   Questions       
4.3.4   Assessments     
4.3.5   Course Schedules        

4.4     SATML Versions  
4.4.1   Version 1       
4.4.2   Final version   

CHAPTER 5       Development of database converter       

5.1     Overview of methods     
5.1.1   Java    
5.1.2   Parsing API     
5.1.3   JDBC - ODBC     

5.2     Overview of the development process     
5.2.1   Specification   
5.2.2   Design  
5.2.3   Conclusion      

CHAPTER 6       method of evaluation    

6.1     Test cases      
6.2     Evaluation criteria     
6.3     Test results    
6.4     Conclusions     
CHAPTER 7       Summary 
APPENDIX A      SATML DTD FILES 
APPENDIX B      CODE FOR SATML-DATABASE CONVERTERS      
APPENDIX C      SATML FILES DESCRIBING COURSE EEL5937   
APPENDIX D      DATABASE DIAGRAM        
LIST OF REFERENCES      
5

LIST OF FIGURES
Figure 1 Common file format for Distance learning material   

Figure 2 Example of entry form for multiple choice questions in WebCT   
Figure 3 Example of a WebCT Multiple Choice file        
Figure 4 Example of questions stored in CyberProf       
Figure 5 The IMS System Model   
Figure 6 XML fragment   
Figure 7 Example of MML 
Figure 8 Default rendering of the nth root      
Figure 9 MusicML code   
Figure 10 Example of Music ML rendering 
Figure 11 Example of embedded elements  
Figure 12 Example of attributes 
Figure 13 Books - Example 1     
Figure 14 Books - Example 2     
Figure 15 Books - Example 3     
Figure 16 Books - Example 4     
Figure 17 Example of minimalist approach for XML rectangle      
Figure 18 Example of extravagant approach for XML rectangle     
Figure 19 Employee DTD  
Figure 20 Employee XML  
Figure 21 Syntax of Attlist     
Figure 22 Example of the use of notations in XML        
Figure 23 Employee list XML file        
6

Figure 24 Schema for an employee list XML       
Figure 25 DCD for bank loans    
Figure 26 ElementDef Example    
Figure 27 AttributeDef Example  
Figure 28 Attribute Example     
Figure 29 Group Example 
Figure 31 Example of XSL        
Figure 32 The root rule 
Figure 33 A more specific pattern       
Figure 34 Specifying attribute values   
Figure 35 Retreiving attributes 
Figure 36 Examples of wildcards 
Figure 37 first-of-type 
Figure 38 QML Structure 
Figure 39 QML Example   
Figure 40 QML Structure 
Figure 41 Quizzit structure     
Figure 42 Example of Quizzit XML        
Figure 43 TML structure 
Figure 44 TML Example   
Figure 45 IMS MC-Test Structure 
Figure 46 IMS MC-Test Answers structure 
Figure 47 IMS Performance-Data structure        
Figure 48 IMS Notification Structure    
Figure 49 IMS Navigation Structure      
Figure 50 IMS MC-Test Example   
Figure 51 IMS MC-Test Answers Example   
Figure 52 IMS Performance example       
Figure 53 IMS Notification example      
Figure 54 IMS Navigation example        
Figure 55 The structure of a general course     

7

LIST OF TABLES
Table 1 IMS Meta Data fields  

Table 2 Examples of Element Declaration 
Table 3 Attlist attributes      
Table 4 ElementDef Attributes   
Table 5 AttributeDef attributes 
Table 6 Group attributes        
Table 7 Course Information      
Table 8 Assignment elements     
Table 9 Question elements       
Table 10 Assessment Elements    
Table 11 Schedule Elements      


8


CHAPTER1 INTRODUCTION


1.1 Problem statement


There are many distance learning software packages available for the Internet today. Two examples are WebCT, which was developed by the department of Computer Science at the university of British Columbia; and CyberProf, developed by the Center of Complex System Research at the University of Illinois.
Most tools are similar in the sense that they let Instructors create quizzes and perform assessments of the students.
The problem is that there are as many ways of storing the assessments and quizzes, as there are tools on the web. Unlike graphics programs, text editors, etc., distance learning tools have no standard file formats and thus there is no way to import or export data from one tool to another. In most tools there are not even means to transfer quizzes, questions, or assessments between different classes created with the same tool.


1.2 Thesis purpose and organization


The objective of this thesis is to develop a standard for storage and transfer of the quizzes, assessments and
1

course data created in current and future distance learning tools.
The work that will be done for this thesis includes the development of a file format for the course data and an application for storing the content of the files into databases as shown in .










Figure Common file format for Distance learning material

The file format will be called Standardized Assessment and Testing Markup Language (or SATML) and the draft for the file format will be submitted to the IMS (Instructional Metadata Systems) Question Interoperability group, as a suggestion for the IMS distance learning file format for this type of data.
In the thesis the issues related to the development of the file format and the converter, will be addressed:

Related work.
The parts of the IMS Specification that are related to this thesis.
Background of XML.
Other applications that have used XML as basis for their files.
XML design considerations.
Rendering XML files using XSL.
Information which needs to be stored.
Security issues when transferring XML files over the Internet, such as methods to avoid that the students read the files with answers to quizzes and assessments.
Methods for parsing XML files.


1.3 General approach to problem


The plan is to implement the file format as an XML (eXtensible Markup Language) which is described in further detail in Chapter 3.
For the implementation of the filter between the XML layer and the Database layer, the Simple Api for XML (SAX: SAX API) developed by the Microstar Corporation and Java will be used due to their close relationship with XML. All Open Database Connectivity (ODBC) compliant relational databases will be supported but the focus will be on Oracle and Access due to the availability of both of these to the researcher and their common use in the industry.
The file format and the filter will be tested by exporting quizzes from WebCT to SATML using a filter developed by Alexander Aguilar, a member of the AIM research team. The SATML files will then be saved to a database and restored to SATML. The different test cases are specified in Chapter 6.


1.4 Distance learning tools on the Internet


Two common distance learning tools on the Internet are WebCT and CyberProf. These tools are both used by the professors at the University of Central Florida to complement their traditional classes. Typically the instructors use them to create homework, quizzes and exams that can be automatically graded. The structure of the files stored by these tools has been used in the research conducted for the development of the SATML file format.
        This chapter contains a review of these tools and a discussion of their advantages and disadvantages.


1.4.1 WebCT


WebCT is a tool in which you can create and distribute
distance learning material. WebCT not only provides a web based study environment but also a web based course management environment. WebCT contains various tools for communication between the instructor and the student and also among the students. Some examples are chat, bulletin boards, conference system etc. In addition to the communication tools WebCT provides tools for creating quizzes and assignment and it also provides student-tracking tools where the student and the instructor can view the students progress among other things.
        The user interface used to create the different types of questions in WebCT is very intuitive as shown in .

2

Figure Example of entry form for multiple choice questions in WebCT


3

WebCT stores every question in a separate file and the files are only visible inside the course where they were created.


1.4.1.1 Developers


The department of Computer Science at the University of British Columbia developed WebCT. An introduction to WebCT can be found on the WebCT web site (http://www.webct.com/webct).


1.4.1.2 Influence on SATML


WebCT heavily influenced the design of the SATML's question files for two reasons: a) the quiz structure of WebCT is complete and tested b) many classes at the University of Central Florida have been using WebCT successfully.
        WebCT allows the instructor to create four different types of questions: multiple choice, short answer, calculated, and matching. These four types of questions have been adopted in the SATML file format since they seem to cover most of the needs that an instructor might have while creating quizzes.

4

:::MC:::1:::0
:::TITLE:::Question 24
:::QUESTION:::H
In general, the annual temperature ranges are greater in the Southern Hemisphere than in the Northern Hemisphere.
:::IMAGE:::
:::LAYOUT:::vertical
:::ANSWER1:::0:::H
True
:::ANSWER2:::100:::H
False
Figure Example of a WebCT Multiple Choice file

shows an example of how a multiple choice question is stored in WebCT's flat file database format.
":::MC:::1:::0" states that the question is a multiple choice question where the student is only allowed to choose one of the answers and a wrong answer can never result in a negative score.
The second line ":::TITLE:::Question 24", defines the title of the question.
":::QUESTION:::H"
"In general, the annual temperature ranges are greater in the Southern Hemisphere than in the Northern Hemisphere."
States the text of the question and the H on the first line declare that the question text should be treated as HTML as opposed to regular text.
After the question text optional image links can be inserted to illustrate the question but in this case ":::IMAGE:::" has been left empty which means that the creator of the question has chosen not to provide any images.
The next line ":::LAYOUT:::vertical" defines that the answers of the question should be lined up vertically. This line is followed by lines stating the possible answers of the question where the numbers 0 and 100 indicate how correct the answer is (correctness), and the H indicates that the answer text should be treated as HTML, instead of regular ascii text.
:::ANSWER1:::0:::H
True
:::ANSWER2:::100:::H
False
Optionally lines providing feedback to the student selecting a particular answer can also follow these lines.
        Most distance learning tools store similar information about their quizzes and questions and since WebCT contained most of the data used in normal distance learning tools, the WebCT structure was used as the backbone of the SATML structure.


1.4.2 CyberProf


CyberProf is a tool that helps the instructor of a course develop assignments for his students.
Unlike WebCT, CyberProf does not store the questions individually. A file in CyberProf contains an entire assignment. The information is created and stored in an HTML like manner.
CyberProf has three different question types: symbolic, singleword and multiple_choice as shown in .

What is the sum of 40 and 25?
<question       name = q1 type = symbolic solution = 65>
<hint name = q1>
  <B>Hint:</B> If you can't add it in your head, use a
  calculator!
</hint>

What is the name of the first U.S. President?
<question name = q2 type = singleword solution =
  washington;george washington>

Which of these does not belong?
<question name = q3 type = multiple_choice solution = 3>
<option name = q3 value = 1>bird</option>
<option name = q3 value = 2>dog</option>
<option name = q3 value = 3>rock</option>
<option name = q3 value = 4>cat</option>
<option name = q3 value = 5>fish</option>
Figure Example of questions stored in CyberProf

The example above was taken from the web site .
The structure of the Cyberprof assignment files is very straightforward and easy to understand, but the questions that can be created in the CyberProf tools are very restricted. CyberProf has one nice feature that WebCT lacks and that is the possibility to give the students hints when they are not able to answer the questions.
Since the ability to give the students hints is a major advantage, this feature has been adopted in the creation of the SATML files.


1.4.2.1 Developers


CyberProf was developed at the center of Complex System Research at the University of Illinois


1.5 Related work


The development of the SATML file format is part of a larger research project. Aside from the development of the SATML file format a filter to save WebCT data in SATML format and a content database to store all the instructional data created at the University has been developed.  


1.5.1 Distance Learning Database


The distance learning database has a close relationship to the SATML file format and thus the structure of the distance learning database follows the structure of the SATML file structure.
        The distance learning database is a distributed database and replication is used to keep the parts of the database current.


1.5.2 WebCT filter


The WebCT filter is intended to work like the file filters used in text editors or graphics programs. The concept is to make the instructors creating course content in WebCT able to save their work in the common SATML format. The prototype for the filter was created for WebCT but developers of distance learning tools that want to make use of the SATML file format can develop similar filters.
The WebCT filter is an add-on and thus it does not affect the internal structure of WebCT.
5


CHAPTER2 IMS - Instructional metadata systems


The IMS Project group is a research group formed by academic, commercial, and government organizations to improve the situation of distance learning. It is based on an initiative from Educom. In the article Robert C, Herrick Jr states that Educom is an organization founded thirty-four years ago by a group of medical school deans and vice presidents from Duke, Harvard, SUNY, the universities of California, Illinois, Michigan, Pittsburgh and Virginia, dedicated to the idea that digital computers offered an incredible opportunity for sharing among institutions of higher education.
The IMS project was formed to develop an infrastructure for managing access to learning materials and environments, to speed the development of instructional software, and to facilitate collaborative and authentic learning activities.
The states that there are three major obstacles being addressed by the IMS Project group:
Lack of standards for locating and operating interactive platform-independent materials
Lack of support for the collaborative and dynamic nature of learning
6

Lack of incentives and structure for developing and sharing content

The IMS working group has developed a prototype for a virtual university environment containing tools for conducting web based classes.
The tools range from student management tools to tools for displaying function graphs on a group of machines simultaneously.
The diagram in and its diagram description shows the architecture of an IMS tool as presented in the IMS Specification, version 0.5 .


7


Figure The IMS System Model

The connections between various parts of the Model represent the various types of data exchange and communication in the IMS system.

1. A Search Engine may use meta-data information to query a Content Server for specific kinds of learning material.
2. A Search Engine may query a Profile Server to find persons with desired skill certifications.
3. An authoring tool may query a Profile Server for preference and performance data to customize its presentation.
4. A Search Engine can obtain course meta-data from a Content Server at an organization hosting an IMS server.
5. Authoring tools may exchange content with an IMS Management System.
6. Authoring tools may interact with content servers to find or provide content and content meta-data.
7. A content server may provide content material to an IMS Management System.
8. There will be many content servers reachable by search engines.

Each course or instructional unit created in the IMS prototype can have it's own distinct resources, and the resources can be anything from web sites containing instructional material to specific teaching tools.
The idea is that all the resources provided for a class or instructional unit should contain meta-data tags to enable searches, management, and reuse of the material.  


2.1 IMS Specifications for Distance Learning


The IMS specification defines a number of meta-data fields that the IMS prototype uses for searches and management of instructional data as shown in .
Table IMS Meta Data fields

Name Type Definition
Author or Creator Opt The person responsible for the creation of the work
     
Name Type Definition
Coverage Opt The coverage of the instructional unit, (use of this field is very experimental)
Date Mand A date associated with the creation or the availability of the resource.
May contain several sub elements such as Publication date, Availability date and expiration date.
Description Mand A textual description of the contents of the resource.
Format Mand The format of the resource, ex. Book, html etc.
Language Mand The language the resource is presented in, ex. US-en
Other Contributors Opt A person or organization besides the creator of the resource that has helped developing the resource
Publisher Mand The entity responsible for making the resource available in its present form
Relation Opt An identifier of a second resource and it's relationship with this resource
Resource Identifier Mand A string or number that uniquely identifies this resource
Resource Type Opt The type of the resource, ex. Tutorial
Rights Management Opt A list of what the student or instructor can do with the resource.
It currently has two sub fields: agent and use rights.
Source Opt Information that this resource is based on
Subject Mand The topic or the keywords of this resource
Title Mand The title of the resource
Agent Opt A person responsible for managing a part of a resource. An instructor is an example of an agent.
Availability Date Opt The date the resource is available for use.
Concepts Opt Ideas related to the resource
Container Type Mand The container type is a very broad description of the resource type

 
   
Name Type Definition
Expiration Date Opt The date that the contents of the resource are no longer valid.
Granularity Opt The size of the resource
Curriculum
Course
Unit
Topic
Lesson
Fragment
NA (Not applicable)
Interactivity Level Opt The level of interaction between the user and the container
Low
Medium
High
Keywords Opt One or more words exemplifying the contents of the course
Last Modified Date Opt The day the resource was last modified
Learning Level Opt The difficulty of the material
Location Opt The URL showing where the resource can be retreived
Meta-Meta-Data Mand Information about Meta-data
Objectives Opt Learning objectives met by the container
Pedagogy Opt The method used to teach the contents of the resource
Discovery, Expository
Platform Opt Software and hardware required to use the contents of the resource
Prerequisites Opt Courses and or capabilities needed to use the material
Presentation Opt Describes how the materials are presented to the user
Images, Verbal, Sound, Multi-User
Price Code Cond The price of using a particular offering
Publication Date Opt The date the resource was first published
Role Opt The role of the entity serving as the learning resource
Curriculum, Course, Unit,
Topic, Lesson,
Fragment, NA (Not applicable)
Scheme Mand A description of the information structure of the resource
Size Of Opt Size of the container in bytes
Structure Opt The organization of the material
Linear, Hyperdimensional, Branched, Parceled, Null
     
Name Type Definition
Use Rights Opt What a user can do with the offering
Restricted
Use
Aggregatable
Disaggregatable
Distributable
Editable
Use Time Opt The average time a normal student would spend on the container (in minutes).
User Support Opt Indicates whether user support is available or not
Version Mand The version of the resource

Not all of the fields defined by the IMS project group need to be present in a resource for IMS compliance.
The center column in defines whether a certain field is optional or mandatory. This does not mean that the field has to be present in the resource, it only means that if the field is present, a value must be given for the field. For further information on the IMS meta-data fields consult the web site .


2.2 Usage of the IMS Specification in this implementation


The SATML format consists of several different file types defining different part of a resource. One of these file types contains the meta data about the current course or instructional unit. In this meta data file most of the information about the resource is gathered.
The SATML Meta data file contains 30 of the 42 fields recommended by the IMS project group, along with about 10 new fields.
8


CHAPTER3 xml


XML is a computer template language for describing information. Extensible Markup Languages (XMLs) are very similar to HTML, in fact HTML 4.0 can be expressed as an XML. A XML file is built up by a set of tags (metadata) that describes the objects in the file as shown in .
<PERSON SEX="Male">
  <NAME>Arnold Burns</NAME>
  <AGE>23</AGE>
</PERSON>
Figure XML fragment

There are many advantages of XML:
XML lets you store information about the data in the files.
XML files are plain ASCII files so bandwidth requirements when transferred over the Internet are minimized.
There is/will be support for rendering and searching XML files in the most common web browsers.
XML is recognized by many large corporations in the computer industry (Microsoft, Netscape...) to be the next major standard for the Internet.
9

This chapter is based on information from technical reference books and .


3.0.1 Background


People have always wanted to share information, through speech, books, music or arts. But in order to convert regular data into information we have to provide the receiver with information about our data.
Although the meaning of "4, Eddie, A, blue", might be very clear, few people can understand the meaning of that data without any explanation. It might be the age of your daughter, the name of your uncle, your grade in history and the color of your car. The data loses meaning without information about the data to back it up.
This is where the ideas about meta-data (data about data) comes in. When HTML was created, the intention was to markup all the information in the documents according to its meaning, and not according to how it would be rendered in a browser. Document titles should be marked up with the <title> tag, addresses with the <address> tag etc. Since the browsers often know more about the readers' preferences than the author of the web page, the browsers should take care of the rendering of the page.
However, the browser vendors have decided to put more of the rendering information in the HTML pages, such as <font>, <i>, <b>, etc. instead of leaving the rendering to the browser or special style sheets.
If the fact that it would be better if we could split the information part and the rendering part is disregarded, there are still two things that are missing in HTML.
HTML has tags for marking up titles, heading, lists, addresses, tables, etc. but even though HTML may be a very rich language for markup of plain text it is very limited when it comes to marking the contents of the document.
The other problem with HTML is that HTML has no internal structure. The way HTML is set up you can have a level 2 heading <H2> without preceding it with a level 1 heading <H1>.
The W3C put together a working group (XWG) and started developing a standard for markup languages called XML (Extensible Markup Language).
The ideas behind XML have been developing since the 1960's, culminating in the approval of XML's parent, SGML, as an international standard in 1986.
SGML (Standard Generalized Markup Language) is an ISO standard for electronic document exchange, archival and processing using meta-data tags to mark up the information.
In many ways XML is a "purification" of SGML, removing portions of it with limited applications that complicated its very powerful and basically simple central ideas.


3.0.2 Intention of XML


The web site hosted by W3C states that when the XML Working Group (XWG) at W3C started with XML they had 10 goals in mind.

1. XML shall be straightforwardly usable over the Internet.
2. XML shall support a wide variety of applications.
3. XML shall be compatible with SGML.
4. It shall be easy to write programs which process XML documents.
5. The number of optional features in XML is to be kept to the absolute minimum, ideally zero.
6. XML documents should be human-legible and reasonably clear.
7. The XML design should be prepared quickly.
8. The design of XML shall be formal and concise.
9. XML documents shall be easy to create.
10. Terseness in XML markup is of minimal importance.


3.0.3 Future


As more and more companies are starting to realize the potential of XML, XML is not only starting to gain ground as the new language for the Internet, but also as a new way to store data in traditional applications to make the applications smarter. Users of software applications are getting used to the applications keeping track of their preferences and storing the content of the files in an XML format enables the applications to display the file contents differently for different users, depending on their preferences.


3.0.4 XML Details


There are three types of XML documents: well formed, valid and incorrect.
For an XML document to be well formed it has to follow a set of rules. The valid XML documents, apart from following the XML rules also have to conform to a DTD (Document Type Definition) which is explained in more detail in section .
All the XML documents that don't follow the XML rules are invalid or incorrect.
To verify and/or validate your XML files you can use one of many tools available on the Internet. An example of a tool that checks if your XML file is well-formed is the XML-Notepad by Microsoft, which can be downloaded freely from the Microsoft XML Notepad website .


3.1 Other Applications that use XML


Extensible Markup Languages have been created for various areas. This chapter contains reviews a few of them in order to show the potential of XML and how XML has been used to markup a wide range of information.
        The objective of this review is to get a feel for how XML can be used, and to get some experience of the process of designing an XML.


3.1.1 MathML


The Mathematical Markup Language was developed because mathematical equations have always been hard to display and model.
Usually images are used to display equations but there are a few problems with images:

You can't search for parts of equations if they are represented by images.
If the font size or type is changed the equations still stay the same.
Images slow the downloading of the document.
Using images makes the text harder to read, since you need more line spacing between the lines that uses images than between the rest of the lines.
Images are harder to cut and paste than text.
Images can't be compressed like text.

The W3C formed a working group for developing a standard markup language for mathematics in 1997 and the first draft of the Mathematical Markup Language was submitted in May 1997.
There has been a lot of software developed to display and edit the Mathematical Markup Language. The most known of these software products is the MathML browser Amaya.
shows an example of a square root modeled in MathML.
The nth root of a is given by:
<apply> <root/>
  <ci> a </ci>
  <ci> n </ci>
</apply>
Figure Example of MML

The default rendering of the square root in Amaya is shown in .
n
√a
Figure Default rendering of the nth root

For more information on the MathML draft consult the .


3.1.2 Music ML


The Music Markup Language describes music in the same way songbooks describe music, With chords, notes, etc.
The example in is provided to give you a feel for how a markup language can be used.
The example below describes a segment of a melody with all its chords, notes and beams.
<Segment>
  <SubSegment position="one">
    <Chord>
      <Note beat="quarter" name="f" level="zero"/>
      <Note beat="quarter" name="b" level="zero"/>
      <Note beat="quarter" name="d" level="plus1"/>
      <Note beat="quarter" name="f" level="plus1"/>
    </Chord>
    <Chord info="Em9-5">
      <Note beat="half" name="c" level="zero"></note>
      <Note beat="half" name="c" level="plus1"></note>
    </Chord>
    <Beam size="triple">
      <Note beat="quarter" name="e" level="zero"></note>
      <Note beat="quarter" name="a" level="zero"></note>
      <Note beat="quarter" name="b" level="zero"></note>
    </Beam>
  </SubSegment>
  ...
</Segment>
Figure MusicML code

The XML document is used as a parameter for a Java applet, which renders the music in the fashion shown below.

Figure Example of Music ML rendering

The example shown in and the image shown in are taken from the web site.
One of the true advantages of Markup Languages is the ability to render the same data in different manners. The default rendering of the Music Markup Language is the one shown in , however other possibilities are the creation of MIDI files from MusicML files.


3.1.3 Microsoft Office


In ", it is written that the development of the new Microsoft Office suite with the code name Office 9 is focused on making office documents easier to publish. The default format for Microsoft Office files will be HTML with embedded XML instead of Microsoft's binary format used in the current versions of Microsoft Office. Embedded XML code will be used to save the meta data about the object that the author of the document has saved in the preference dialogue boxes. Office 9 will also use embedded CSS's (Cascading Style Sheets) to save the appearance of the documents.


3.2 General XML design considerations


In all the news groups about XML the discussions about the topic of XML design is the one that merits the most discussion.
In this chapter the issue of attributes/elements and links/embedded data will be discussed to give a feeling for why certain design decisions were made.


3.2.1 Attributes vs. Elements


The question of using attributes or elements is for the most part only an esthetical design question, but there are a few rules of thumb that are worth considering when designing a Markup Language. The following rules of thumb were gathered through reading Robin Covers and postings in the comp.text.sgml news group ], ] and ].
1. Use an embedded element when the information you are encoding is part of the parent element.
<author>
  <first-name>Betty</first-name>
  <last-name>Boop</last-name>
</author>
Figure Example of embedded elements

2. Use an attribute when the information is inherent to the parent but not a constituent part.
<person height="123">
  <head/>
  <body/>
</person>
Figure Example of attributes

3. Use attributes for simple data type validation
4. Use elements for complex structure validation
5. Use attributes for things that will not produce ink on the paper.
6. Use elements when the information has an internal structure of its own.
7. Use elements when the information can be contained in more than one element.
8. Use attributes when modeling a static object that will not change over time.
9. Use attributes to represent a link.


3.2.1.1 Practical considerations


Some tools used to edit XML files don't show the attributes while editing the file, instead a dialog box to edit the attributes, must be opened.
This can be very tedious while editing large files.


3.2.1.2 Advantages and Disadvantages


3.2.1.2.1 Advantages of attributes

Attributes can have default values
Attributes can have data types
Attributes take less space since they have no start and end tags

3.2.1.2.2 Disadvantages of attributes

Attributes are not convenient for large values
Values containing quotes can be difficult to handle
White spaces can't be ignored in attributes
Attribute values are harder to search for in search engines
Attribute values often don't appear on the screen in editing tools
Attributes can be slightly more awkward to access in the processing API's
Attributes are unordered


3.2.1.3 Context


There is no golden rule about when to use attributes and when to use elements. In fact sometimes attributes should be used for one thing and in another context elements should be used for the same thing.
Here are some examples of how the encoding of an object can change just because the object is in a different context.

BOOKS
1. For an Insurance Companies list of property to be replaced or customs list of objects declared at the border, the only important thing is that the object is a book.
<BOOK TITLE="Mary's chance" Author="Sheldon, Sidney"/>

or
<OBJECT TYPE="Book" PRICE="$8">
Figure Books - Example 1

2. Encoding of a title inline where the title will be printed as part of the paragraph. The Authors name can be extracted for use in index lists etc.
<PARA>
I enjoyed the book <BOOK AUTHOR="Sheldon,
Sidney">Mary's chance</BOOK>.
</PARA>
Figure Books - Example 2

3. For an online bookstore, a library catalogue, the citation line of a quotation etc

<BOOK>
        <TITLE>Mary's chance</TITLE>
        <AUTHOR>Sheldon, Sidney</AUTHOR>
</BOOK>
Figure Books - Example 3

4. A totally different approach, using links to the author
so that the author information can be reused for other books.
<BOOK ID="The Call of the Wild">
        <AUTHOR UNIT="Jack London"/>
</BOOK>

<PERSON ID="Jack London">
        <FIRST>Jack</FIRST>
        <LAST>London</LAST>
        <PHONE>(206) 555-3423</PHONE>
        <WORK UNIT="The Call of the Wild"/>
        <WORK UNIT="Love those Wolves"/>
</PERSON>

<STORE ID="Walmart">
        <CUSTOMER UNIT="Jack London"/>
        ...
</STORE>
Figure Books - Example 4

RECTANGLES

These are two examples of how differently you can model a rectangle depending on your needs.

1. "Minimalist" approach as seen in .
<RECTANGLE X="0" Y="0" WIDTH="0" HEIGHT="0"/>
Figure Example of minimalist approach for XML rectangle

2. Extravagant approach as seen in .


<RECTANGLE>
        <ORIGIN><X>0</X><Y>0</Y></ORIGIN>
        <SIZE><DX>7in</DX><DY>9in</DY></SIZE>
        <LABEL>My Pretty Rectangle</LABEL>
        <IMAGE>floral.jpg </IMAGE>
        <BACKGROUND>gold</BACKGROUND>
        <FOREGROUND>blue</FOREGROUND>
        ...
</RECTANGLE>
Figure Example of extravagant approach for XML rectangle


3.3 DTD vs. Schema


A DTD as well as a schema are defined as templates for or a specification of files of a specific extensible markup language. The DTD/Schema is used for validation of the XML files and they specify which elements are allowed in different contexts, how many times every element can or must occur and which data types are allowed for specific elements.
        XML is case sensitive so any names and strings that appear in the DTD's or schemas need to be in the same case in the XML document for the XML document to be valid.


3.3.1 DTD Overview


Defining a markup language is not difficult. shows a simple DTD for an employee list and an example of an XML file written using this DTD is shown in . The example is very limited but it shows the basic elements of a DTD (Document Type Definition).


<!ELEMENT EMPLOYEELIST  (EMPLOYEE+)>
<!ELEMENT EMPLOYEE                      (NAME, EMPLOYEENUMBER,
                                         OFFICEPHONE?)>
<!ELEMENT NAME                  (FNAME, LNAME)>
<!ELEMENT FNAME                 (#PCDATA)>
<!ELEMENT LNAME                 (#PCDATA)>
<!ELEMENT EMPLOYEENUMBER                (#PCDATA)>
<!ELEMENT OFFICEPHONE           EMPTY>
<!ATTLIST PART    AREA  CDATA #REQUIRED
                  NUMBER        CDATA #REQUIRED>
Figure Employee DTD

<EMPLOYEELIST>
  <EMPLOYEE>
    <NAME>
     <FNAME>Burt</FNAME>
     <LNAME>Reynolds</LNAME>
    </NAME>
    <EMPLOYEENUMBER>123</EMPLOYEENUMBER>
    <OFFICEPHONE AREACODE="407" NUMBER="555-1212" />
  </EMPLOYEE>
  <EMPLOYEE>
    <NAME>
     <FNAME>Ronald</FNAME>
     <LNAME>Reagan</LNAME>
    </NAME>
    <EMPLOYEENUMBER>456</EMPLOYEENUMBER>
    <OFFICEPHONE AREACODE="407" NUMBER="555-2323" />
  </EMPLOYEE>
  <EMPLOYEE>
    <NAME>
      <FNAME>Pete</FNAME>
      <LNAME>Sampras</LNAME>
    </NAME>
    <EMPLOYEENUMBER>789</EMPLOYEENUMBER>
    <OFFICEPHONE AREACODE="407" NUMBER="555-3434" />
  </EMPLOYEE>
</EMPLOYEELIST>
Figure Employee XML

This chapter will describe the most common elements of a DTD and the possible values for these elements as stated in W3C's draft.


3.3.1.1 <?XML>


The <?XML> element is used by the XML processor to determine how the file should be processed.
The <?XML> element has 7 different attributes and all of them are optional.
<?XML encoding="UTF-8"> indicates the character encoding used for this document. The possible values for character encoding are UTF-8, UTF-16, UCS-2, UCS-4, ISO8859, Shift-JIS, EUC-JIS, New-JIS. Not all of these have to be supported but the XML processor must support at least the UTF-8 or the UCS-2 encoding.
<?XML RMD="NONE"> tells the XML processor that it does not need to validate the XML file against its DTD. For this attribute the possible values are NONE, INTERNAL and ALL where ALL means that the entire DTD must be checked to validate the XML file.
The rest of the attributes; empty, notext, text, idinfo and default; are used to give a summary of the DTD for non-validating processors.
The <?XML> element is used in the XML document and not in the DTD.


3.3.1.2 <!DOCTYPE>


The <!DOCTYPE> element is used in the XML files to include markup definitions or pointers to DTDs.
The <!DOCTYPE> element contains the name of the element it refers to, usually the top element of the document.
<!DOCTYPE questions SYSTEM "Satml.dtd"> is an example of how to include the markup definitions stored in a DTD in the XML file, and <!DOCTYPE question [<!ELEMENT question (#PCDATA)>]> is an example of how to include inline markup definitions in the XML file.


3.3.1.3 <!-- COMMENT -->


Comments are used to make the XML document or the DTD more readable and to provide additional data. Comments are created in XML files or DTDs by surrounding the comments with <!-- and -->.


3.3.1.4 <!ELEMENT>


The <!ELEMENT> tag is used to define the possible elements in the document.
The syntax of the <!ELEMENT> tag is <!ELEMENT NAME (CONTENTS)>. The name has to be unique and the contents describe the child elements that are allowed within this element.
For example <!ELEMENT DATE (DAY, MONTH, YEAR)> means that the element DATE must contain a DAY element followed by a MONTH element which is followed by a YEAR element and no other elements are allowed inside the DATE element.
There are four types of restrictions on how many times an element can or must occur inside another element. The default occurrence value for an element is required, i.e. it must occur once and only once inside the parent element. A "?" after an element means that the element is optional. "+" means that the element can occur one or more times and "*" indicates that the elements can occur zero or more times.
If an element doesn't contain any child elements its content is described as #PCDATA or EMPTY. If an element can contain any mix of child elements and text the content is described as ANY.
#PCDATA means that you can include ordinary text without markup between the start and end tag of the element, while EMPTY means that the element has no contents and therefore only the start tag is required. (Note that the start tag ends with "/>" instead of ">" if the element is empty to indicate that the end tag will be omitted. shows a few variations of element declarations.

10

Table Examples of Element Declaration

Example Definition
<!ELEMENT EMPLOYEE
(NAME, OFFICEHOURS, PHONE+)>
An employee element consists of a name element followed by a officehours element followed by one or more phone elements
<!ELEMENT EMPLOYEE
(NAME, OFFICEHOURS?, PHONE+)>
An employee element consists of a name element optionally followed by a officehours element and one or more phone elements
<!ELEMENT EMPLOYEE
(NAME, OFFICEHOURS*, PHONE+)>
An employee element consists of a name element followed by zero or more officehours element followed by one or more phone elements
<!ELEMENT EMPLOYEE
(NAME, OFFICEHOURS, (PHONE+|EMAIL*))>
An employee element consists of a name element followed by an officehours element followed by either one or more phone elements or zero or more email elements
<!ELEMENT EMPLOYEE ANY> An employee element consists of any combination of elements and character data, in any order
<!ELEMENT EMPLOYEE
(((NAME, OFFICEHOURS) | (NAME, OFFICEHOURS)), PHONE?)>
An employee element consists of the elements name and officehours in any order followed by an optional phone element

3.3.1.5 <!ATTLIST>


<!ATTLIST> defines the attributes of the element. The syntax of the "attlist" tag is
<!ATTLIST NAME
ATTRIBUTENAME   TYPE            RESTRICTION
ATTRIBUTENAME   TYPE            RESTRICTION
...
>
Figure Syntax of Attlist

NAME refers to the element to which the attributes will be attached.
explains the different types of attributes that can be defined in a DTD.
Table Attlist attributes

Type Example Definition
String <!ATTLIST PHONENUMBER
  AREACODE CDATA ...>
The value of the areacode attribute can be any character string Ex. AREACODE="(407)"
Enumerated <!ATTLIST OFFICEHOURS
  DAY (m|tu|w|th|f) ...>
The value of the day attribute has to be one of the five indicated strings
Ex. DAY="m"
ID <!ATTLIST EMPLOYEE
  EMPLOYEENR ID ...>
The value of the employeenr attribute has to be unique in the document for the XML document to be valid. An ID string can begin with a letter, a "_" or a ":"
Ex. EMPLOYEENR="tf389"
IDREF <!ATTLIST WORKORDER
  EMPID IDREF ...>
The value of empid has to match a value assigned to an ID attribute somewhere in the document
Ex. EMPID="tf389"
IDREFS <!ATTLIST WORKORDER
  EMPIDS IDREFS ...>
The same as IDREF but IDREFS can contain more than one ID reference
Ex.
EMPIDS="tf1 tf2"
NMTOKEN <!ATTLIST EMPLOYEE
  PHONENR NMTOKEN ...>
A nmtoken is similar to a string, except that a nmtoken can only contain letters, digits and the following characters ".-_:", no white spaces are allowed
Ex.
PHONENR="555-1212"
NMTOKENS <!ATTLIST EMPLOYEE
  PHONENRS NMTOKENS ...>
The same as NMTOKEN but NMTOKENS can contain more than one NMTOKEN.

The <!ATTLIST> element also contains information about whether or not a value must be supplied for the attribute.
The three options are #REQUIRED, #IMPLIED and #FIXED.
<!ATTLIST EMPLOYEE NUMBER CDATA #REQUIRED> means that the attribute number has to be specified in the XML file.
Ex. <EMPLOYEE NUMBER="tf00389">Tess Ferrandez</EMPLOYEE> is valid but not <EMPLOYEE>Tess Ferrandez</EMPLOYEE>.
<!ATTLIST EMPLOYEE NUMBER CDATA #IMPLIED> means that the employee number is optional.
A fixed attribute means that the value of the attribute is specified and there can be no other values.
Ex. <!ATTLIST FRUIT EDIBLE CDATA #FIXED "YES">


3.3.1.6 <!ENTITY>


Entities are used as aliases for other text or external files. If you declare the <!ENTITY myGreeting "Sincerely - Teresa Ferrandez"> and insert the word &myGreeting; in the XML document, the word &myGreeting; would be replaced by "Sincerely - Teresa Ferrandez". You can also use external entities like <!ENTITY copyRightText SYSTEM "http://www.a.com/copyright.xml"> and the word ©RightText; in the XML file will be replaced by the contents of the file http://www.a.com/copyright.xml.


3.3.1.7 <!NOTATION>


The <!NOTATION> element allow XML documents to refer to external data which is not described in an XML format, in a consistent way.
The <!NOTATION> element specifies an application that can be used to process the information.
<!DOCTYPE person [
<!NOTATION DSIG SYSTEM
"http://www.acmepc.com/dsig.exe">
        <!EMTITY sig SYSTEM "mysig.dsg" NDATA DSIG>
        <!ELEMENT person (name)>
        <!ATTLIST person signature ENTITY #REQUIRED>
        <!ELEMENT name (#PCDATA)>
]>

<person signature = "sig">
<name>Sean McGarth</name>
</person>
Figure Example of the use of notations in XML

is a fragment of an XML file taken from the book XML by Example showing an example of how the notation element can be used.


3.3.2 Schema Overview


In January of 1998 Microsoft, Arbor Text, University of Edinburgh, Data Channel and the Inso Corporation submitted a draft for a variation of the XML DTD called XML-Data or XML-Schemas to the World Wide Web Consortium (W3C).
The W3C website states that the W3C was founded in October 1994 to lead the World Wide Web to its full potential by developing common protocols that promote its evolution and ensure its interoperability. Submittals are sent to the W3C, which works with the submitter to either recommend or reject the proposal. Proposals accepted by the W3C typically become Internet standards.
The XML-Schemas have a few major advantages over XML DTDs but the XML-Data proposal was never approved by the W3C. Instead a new working group was formed for a fusion between XML-Data and another similar and very popular format called Resource Description Framework (RDF).
RDF is a framework for metadata; it provides interoperability between applications that exchange machine-understandable information on the Web.
The new proposal has the name DCD (Document Content Description) and Textuality, Microsoft and IBM submitted it to the W3C in July of 1998 ].
The new DCD proposal is a superset of the XML-Data and it is designed to be conformant with RDF.
To define an eXtensible Markup Language for an employee list of the format shown in , an XML-Schema like the one shown in must be created.
<employeeList>
<employee title="research assistant">
  <firstName>Teresa</firstName>
  <lastName>Ferrandez</lastName>
  <employeNumber>828-00-0398</employeeNumber>
</employee>
<employee title="doctor">
  <firstName>Ron</firstName>
  <lastName>Eaglin</lastName>
  <employeNumber>555-00-1212</employeeNumber>
</employee>
</employeeList>
Figure Employee list XML file


11

<?XML version='1.0'?>
<s:schema id="employeeList">
  <elementType id="firstName">
<string/>
</elementType>
  <elementType id="lastName">
    <string/>
  </elementType>
  <elementType id="employeeNumber">
    <string/>
  </elementType>
  <elementType id="employee">
    <element id="fn" type="#firstName">
    <element id="ln" type="#lastName">
    <element id="en" type="#employeeNumber">
    <key id="k1">
      <keyPart href="fn"/>
      <keyPart href="ln"/>
      <keyPart href="en"/>
    </key>
    <attribute name="title" default="manager">
  </elementType>
</s:schema>
Figure Schema for an employee list XML


3.3.2.1 General Syntax


All DCDs are surrounded by a DCD element.
<DCD>
  ...
</DCD>

The DCD element defines the beginning and the end of the DCD. Inside the DCD element there can optionally be a <?DCD> element containing compiler directives, and there must be at leas one <ElementDef> element.


3.3.2.2 <ElementDef>


shows a fragment of a DCD for bank loans.

12

<ElementDef Type="Loan">
  <Description>A Bank Loan</Description>
  <Group RDF:Order="Seq">
   <Element>InterestRate</Element>
   <Element>Amount</Element>
   <Element>Maturity</Element>
  </Group>
</ElementDef>

<ElementDef Type="InterestRate" Datatype="float"/>
<ElementDef Type="Amount" Datatype="int"/>
<ElementDef Type="Maturity" Model="Data"
            Datatype="dateTime"/>
Figure DCD for bank loans

The DCD defines the element <Loan> that contains a InterestRate, a Amount and a Maturity element in that order.
The attributes of the ElementDef element and their possible values are shown in .
Table ElementDef Attributes

Attribute Possible values Description
Type A string that starts with a letter, _ or : continued by any series of letters, digits, ., _, or - The type is the name of the element, ex. <title></title> has the type="title"
Model Empty - No content
Any - Text and elements
      Of any type
Data - Only text
Elements - Only Specific
      Elements
Mixed - Text and specific
      Elements
Indicates the possible content of this element
Contents Open - may contain non
      Specified Elements
Closed - may not contain
      Unspecified  
      Elements
Indicates if this element can have child elements not stated in the group statement
Datatype Can be string, int, number, dateTime etc. For full list see [1] the DCD submission to the W3C Defines what data the element can contain
Attribute Possible values Description
Min, Max, MinExclusive, MaxExclusive Numbers or strings depending on the data type of the contents Upper or lower bounds on the contents, this attribute is only meaningful if the content model is data
Default Any value that is of the same datatype as the contents of the element The default value of the contents if none is proviede
Fixed True or False True means that other values than the default is allowed
Root True or False True means that this element may serve as the root element of this kind of document

The only required attribute is the type attribute, which has to be unique in the DCD.


3.3.2.3 <Element>


The <Element> element refers to a previously defined element, and it is used to define the structure of the XML document.
<ElementDef Type="Employee" Model="Elements">
  <Element>FirstName</Element>
  <Element>LastName</Element>
</ElementDef>
Figure ElementDef Example

In the example shown in above, the element Employee has to contain a FirstName and a LastName element in that order.


3.3.2.4 <AttributeDef>


An AttributeDef declares an attribute, which may be provided for one or more elements in the DCD.
An example of how an attribute definition can be used to define a first name attribute is shown in .
<DCD>
<?DCD syntax="explicit"?>
...
<AttributeDef Name="FirstName" DataType="string">
...
</DCD>
Figure AttributeDef Example

shows the attributes of the <AttributeDef> element and their possible values.
Table AttributeDef attributes

Attribute Possible values Description
Name A string that starts with a letter, _ or : continued by any series of letters, digits, ., _, or - The name of the attribute
Global True, False Indicates whether the Name property of this attribute must be unique in the DCD
Default See Default for ElementDefs  
Description See Description for ElementDefs  
Max, Min, MaxExclusive, MinExclusive See Max, Min etc. for ElementDefs  
Fixed See Fixed for ElementDefs  
ID-Role ID, IDREF, IDREFS Signals that the attribute has unique ID pointer sematics
 
 
 
Attribute Possible values Description
Id Ex. "sizeAtt" Attributes defined with Global="False" can be referred to in other element definitions in the DCD by this identifier.
Resource A string referring to an attribute id in the document
Ex. "#sizeAtt"
Refers to the id of an attribute in the document.
Occurs Required, Optional Indicates whether the precence of the attribute is required
UniqueIn Name of an element present in the DCD or null Defines in what context the attribute is unique, an element name indicates that the attribute name is unique in that element, null indicates uniqueness in the whole document
Datatype See Datatype for ElementDefs  


3.3.2.5 <Attribute>


The <Attribute> element refers to an already defined Attribute. This element is used to provide elements with attributes.
<ElementDef Type="IMG">
<Attribute>BORDER</Attribute>
<Attribute>SRC</Attribute>
</ElementDef>
Figure Attribute Example

shows how to create an element IMG with the attributes BORDER and SRC. The attributes BORDER and SRC have to be defined with AttributeDefs


3.3.2.6 <InternalEntityDef> and <ExternalEntityDef>


The internal and external entity definitions provide alias for common sentences or texts like copyright notices.


3.3.2.7 <Description>


The <Description> element is an optional element provided to give extra information about elements and attributes for better readability.


3.3.2.8 <Group>


The order of the child elements and whether or not they are required is specified in the <Group> element.
The example in shows the usage of the group element.
<ElementDef Type="person" Model="Elements">
  <Group Order="Seq">
    <Element>FirstName</Element>
    <Group Occurs="Optional">
      <Element>MI</Element>
    </Group>
    <Element>LastName</Element>
  </Group>
</ElementDef>
Figure Group Example

In this example the person element contains one FirstName element optionally followed by a MI element which is followed by a LastName element in that order.
The attributes for the group element are Occurs and Order and their values are shown in .

13

Table Group attributes
Attribute Values Description
Occurs Required, Optional, OneOrMore, ZeroOrMore Defines if the elements in the group are required or not and how many times they can occur within the parent element
Order Seq, Alt Defines if the order of the child elements is important or not


3.3.3 Conclusion


A DTD is a very short and concise definition of an XML, while a DCD is very verbose and not as restricted as the DTD.
The DCD not only defines the types and the format of the attributes but also the data types for the element information. The question is if this type definition really is necessary since most XML parsing applications need to check the format of the data anyway.
For SATML a DTD was used mainly because the normal DTD is a standard by the W3C while the Microsoft schema is still subject to change.


3.4 Rendering XML files using XSL


One of the design principles of XML is that the content and the formatting shall remain separate.
The XSL (Extensible Stylesheet Language) contains the formatting options for the chosen XML. One XML can have several XSL's for different purposes.
After the XSL document and the XML document is written an XSL processor combines the XML content with the XSL formatting to generate an output file that can be read by the browser or application for which the data is intended.








3.4.1 Overview of XSL


The Extensible Stylesheet language is designed for formatting XML data, in a similar way that CSS (Cascading Style Sheets) are designed for formatting of HTML documents. However XSL provides functionality beyond CSS.
XSL is based on the Document Style Semantics and Specification Language (DSSSL) standard, which is an International Standard for specifying document transformation and formatting.
Microsoft's web site states that XSL provides the following capabilities:
Formatting of source elements based on ancestry/descendery, position and uniqueness
The creation of formatting constructs, including generated text and graphics
The definition of reusable formatting macros
Writing-direction independent style sheets
Extensible set of formatting objects

The basic element of a XSL document is a construction rule, which contains a pattern and an action. The pattern describes an element in the XML file and the action describes what should happen to the output file when this pattern is found.
contains three types of XSL rules each with their patterns and actions.
<xsl>
<rule>
  <root/>
  <HTML>
  <BODY>
   <children/>
  </BODY>
  </HTML>
</rule>

<rule>
  <target-element type="orders"/>  
  <DIV font-size="14pt" font-family="serif">
   <children/>
  </DIV>
</rule>

<style-rule>
  <target-element type="customer"/>
  <apply fornt-weight="bold"/>
</style-rule>
</xsl>

Figure Example of XSL
The second rule in the example above indicates that whenever the XSL-processor finds an <orders> element its contents should be given the font serif 14pt. The resulting output file will contain the following row:
<DIV font-size="14pt" font-family="serif"> ... </DIV>.


3.4.1.1 Rule types


Every XSL document has to have one and only one root rule, which defines the basic structure of the output document.
<rule>
  <root/>
  <HTML>
  <BODY>
    <children/>
  </BODY>
  </HTML>
</rule>
Figure The root rule

The root rule in encloses the content of the XML file with the basic start and end tags of an HTML document.
If the user does not specify a root rule, a built in root rule will kick in, but the built in root rule does not have any formatting information.
Construction rules have one or more patterns followed by one or more actions that should occur when all the patterns are matched.
The third kind of rule is the style-rule which contains one or more patterns followed by an apply element of the following sort <apply font-style="italic" color="red">. The style is then merged with the other formatting provided by the construction rules.


3.4.1.2 Rule hierarchy


If an element causes more than one rule to fire, the rule with the most specific pattern will file in most cases. The following nine criteria are checked to determine which rule is more specific.
1. The pattern with the highest importance value (set by the importance attribute).
2. The pattern with the greater number of id attributes.
3. The pattern with the greater number of class attributes.
4. The pattern with the greater number of <element> or <target-element> elements having a type attribute.
5. The pattern with fewer wildcards
6. The pattern with the higher specified priority
7. The pattern with the higher number of only qualifiers
8. The pattern with the higher number of position qualifiers
9. The pattern with the higher number of attributes specified


3.4.1.3 The pattern


Every pattern contains one <target-element> element with the following syntax <target-element type="name"> where name is the name of the element in the XML file that the rule should apply to.
The pattern <target-element type="A"> indicates that the rule applies to all <A> elements, but the pattern can also be more specified like the pattern in .
<element type="B">
<element type="C">
  <target-element="A"/>
</element>
</element>
Figure A more specific pattern

A pattern can also include attributes, wildcards and qualifiers.

3.4.1.3.1 Attributes

You can include attributes in patterns in two ways, one method is by specifying the value the attribute should have for the rule to fire like in .
<!-- pattern matches <IMG width="300"> elements -->
<target-element type="IMG">
  <attribute name="width" value="300"/>
</target-element>

<!-- pattern matches immediate children to <TABLE  
                              border="0"> elements -->
<element type="TABLE">
  <attribute name="border" value="0"/>
  <target-element/>
</element>
Figure Specifying attribute values

The second way to use attributes in the pattern is to make the rule fire based on the presence of the attribute value <attribute name="A" has-value="yes">.
You can also use the value of the attribute in the action part of the rule as shown in .
<album width="300">
  <photograph image-url="barbie.gif"/>
</album>

<rule>
  <target-element type="photograph"/>
  <IMG SRC='=getAttribute("image-url")'
       width='=parent.getAttribute("width")'/>
</rule>
Figure Retreiving attributes

In the example above the resulting line in the output document will be <IMG SRC="barbie.gif" width="300"/>.


3.4.1.3.2 Wildcards

Wildcards can be used in patterns to create more general rules like in .



Figure Examples of wildcards
In example A, the rule applies to any element that is an immediate child of element A. In example B the rule applies to any child of element A. In example C the rule applies to any immediate children of the immediate children of element A.

3.4.1.3.3 Qualifiers

Qualifiers are used to apply special formatting to the first or last element in a group through the position attribute.
The pattern in causes its rule to fire only when it finds the first occurrence of element A inside an element B.
<element type=″B″>
<target-element type=″A″ position=″first-of-type″>
</element>
Figure first-of-type

The other possible values for position are: last-of-type, first-of-any and last-of-any. The values first-of-any and last-of-any causes the rule to fire only if element A is the first child element of element B.
The <target-element> element can also have an only attribute with the following values, of-any or of-type. The argument only="of-any" will cause the rule to fire only if the target element is the only child element of its parent.


3.4.1.4 The action


The action of a rule defines the formatting elements that will be applied to the element in the output file. Any HTML code or CSS constructs can be use in the action part of the rule.
The action part can also be used to reorder the elements, insert scripts and dynamic HTML. In the action part you can also evaluate expressions such as childNumber(this) which returns the order of this element inside the parent element.


3.4.2 Possibilities and limitations


Separating the content from the formatting enables the creator of XML files to present the information based on the users preferences. The possibilities of this are endless. In the case of SATML question files, the questions can be displayed differently for students and for instructors without changing the content. The questions can be shown with or without answers, with or without hints. They can be displayed as a list of titles or with their full content, the user can choose to only see multiple choice questions or questions from a specific category only by using different XSLs.
The limitations of using XML with XSL mostly consist in that very few Internet browsers are able to read XML and XSL files and XSL lacks some capability when it comes to scripting, however XSL is still being developed these capabilities will probably be added.


3.4.3 Possible uses for XSL's with SATML


An XML viewer is in the process of being developed to show SATML assignments using XSL and Java. XSL can also be used to display the other SATML files and it can give the student a choice of how he/she wants the information to be displayed.


3.5 XML and security issues


XML can currently not be used to deliver security critical information to the user because XML files are plain ASCII files without encryption and therefore, anyone can go in and view the full content of the XML files at any time. Restricting the user from viewing the source of the XML files causes the user to be unable to view any part of the XML file.
This is a problem when creating assignments in XML since the students are perfectly able to go in and view the answers of the questions before even taking the quiz or solving the problems provided in the assignment.
There are XML working groups that are working on ways to restrict the user from seeing particular parts of the XML files, in the case of the question files this would apply to the answers, but as of October 1998 nothing has been decided in this matter.
14


CHAPTER4 development of satml


The development of the SATML file format was done in four steps. The first step was to review similar initiatives done in SGML and other formats. This step was followed by a deeper look into the IMS specification and the suggested information that should be saved. After finding out what information was needed to make a resource IMS compliant, the next step was to review a few largely used distance learning tools to find out what kind of information they stored. The first draft of the SATML language was then developed. After creating tools to import and export the information to databases a few modifications were done to the file format due to some fields not being practical. In the last step the final version of the SATML file format was developed and submitted to the IMS Question Interoperability group for review.
This chapter explains the steps taken towards the development of the SATML file format in greater detail.


4.1 Review of similar XML initiatives


The desire to share instructional data is not new and there have been several attempts to solve this problem in
15

the past. This chapter describes a few of these initiatives and their advantages and disadvantages.


4.1.1 QML (Question Markup Languge)


4.1.1.1 Developers of QML


QML is copyrighted by the Tekamah Corporation ] and the information for this chapter was taken from their web site about the .


4.1.1.2 Description


QML is a question markup language for multiple choice questions.


4.1.1.3 Structure


shows the structure of a QML file.




Figure QML Structure


4.1.1.3.1 Elements

QUESTION

The question element is the outermost element of the file.
Atts:   SHUFFLE (Opt.) can have the values yes or no. Yes means that the answers should come in random order when displayed.
VISALTS (Opt.) defines the number of visible alternatives. It is possible to provide distractors  (i.e. incorrect answers) to a question, and when the question is rendered the display application chooses one correct answer and VISALTS-1 incorrect answers to display. If the instructor gives 6 answers and chooses to only show 4, the question can be rendered in 4*(6!/(3!+3!)) = 240 different ways.
NUMDIS (Opt.) defines the number of distractors that the display application should show. This attribute is useful if the instructor wants to randomize the questions even more by adding one or more additional correct answers. If the user provides 2 correct answers and 5 incorrect answers, setting VISALTS to 4 and NUMDIS to 3 would mean that the question can be rendered in (4*3)*(6!/(4!+2!)) = 480 different ways.
SubElements:    The Question element contains an zero or more keywords, followed by the stem (statement) of the question, one or more answers and an optional general feedback.

KEYWORD
An optional number of keywords can be provided for a question to enable instructors to find questions that relate to a specific subject.
Atts:           None
SubElements:    None

STEM
The stem of the question is the actual question text.
Atts:           None
SubElements:    None

ALT
An alternative can be either a correct answer or an incorrect answer.   
Atts:   The possible values of the CORRECT (Req.) attribute are yes and no, where yes means that this is the correct alternative. There can be one or more correct alternatives and one or more incorrect alternatives but the user is only able to choose one alternative when answering the question.
SubElements:    The alternative is composed by an answer element containing the answer text and an optional ELEMENTS feedback element giving specific feedback to the user if this alternative is chosen.

ANSWER
The answer element contains answer text for one of the alternatives     
Atts:           None
SubElements:    None

FEEDBACK
Feedback is an optional text that should be displayed to the user when a specific answer is chosen or when the question is answered.
Atts:           None
SubElements:    None


4.1.1.4 Examples


shows an example of a multiple-choice question created in QML. The question will be displayed with four of the seven alternatives and 3 of the visible alternatives will be incorrect answers.
<QUESTION SHUFFLE="yes" VISALTS="4" NUMDIS="3">
  <KEYWORD>Government</KEYWORD>
  <KEYWORD>History</KEYWORD>
  <STEM>
    What is the name of the president of the United   
    States?
  </STEM>
  <ALT CORRECT="no">
    <ANSWER>George Washington</ANSWER>
    <FEEDBACK>Incorrect!!!</FEEDBACK>
  </ALT>
  <ALT CORRECT="no">
    <ANSWER>George Bush</ANSWER>
    <FEEDBACK>Incorrect!!!</FEEDBACK>
  </ALT>
  <ALT CORRECT="no">
    <ANSWER>Ronald Reagan</ANSWER>
    <FEEDBACK>Incorrect!!!</FEEDBACK>
  </ALT>
  <ALT CORRECT="yes">
    <ANSWER>Bill Clinton</ANSWER>
    <FEEDBACK>Correct!!!</FEEDBACK>
  </ALT>
  <ALT CORRECT="yes">
    <ANSWER>William Clinton</ANSWER>
    <FEEDBACK>Correct!!!</FEEDBACK>
  </ALT>
  <ALT CORRECT="no">
    <ANSWER>Abe Lincoln</ANSWER>
    <FEEDBACK>Incorrect!!!</FEEDBACK>
  </ALT>
  <FEEDBACK>
    The most recent American presidents were Bill
    Clinton, George Bush and Ronald Reagan.
  </FEEDBACK>
</QUESTION>
Figure QML Example


4.1.1.5 Advantages and Disadvantages


A big disadvantage of QML is that the only questions that can be modeled are multiple-choice questions. The advantages of QML is that QML allows instructors to provide feedback and the instructor can also control how and if the answers should be randomized.


4.1.2 QML (Quiz Markup Language)


4.1.2.1 Developers of QML


Dr. Robert Bamberger ], Christopher Shorey ] and Richard Simpkinsson ] developed QML at the Washington State University.


4.1.2.2 Description


QML is a markup language designed to quickly and easily create quizzes in Asymetrix Toolbook for use as applications or as internet based documents.
QML is SGML like and some of the elements in QML are not compliant to the XML standard.


4.1.2.3 Structure


The Quiz Markup Language is different from other examples in its syntax. This review only focuses on the content of the Markup Language and for simplicity the Quiz Markup Language has been converted to XML. shows the structure of this XML.

16












Figure QML Structure

The structure for the Quiz Markup Language is based on information found on the web site.


4.1.2.3.1 Elements

QUIZ

Quiz is the outermost tag allowed.
Atts:           None
SubElements:    The QUIZ element contains optional elements, FEEDBACKCORRECT, FEEDBACKINCORRECT, FEEDBACKPARTCORRECT, followed by one or more question PAGEs, and a number of optional elements including
TITLE, SUBTITLE, RANDOM, TRIES, MULTICORRECT, MAXSCORE, AUTORESET, AUTOLOCKANSWERS, DELAYEDFEEDBACK, and SCORED.

FEEDBACKCORRECT
Feedbackcorrect gives feedback if the student answers a question correctly. This element can reside inside the QUIZ element to give a global feedback on correct answers or inside a QUESTION tag to give feedback if the specific question is answered correctly.
Atts:           None
SubElements:    None

FEEDBACKINCORRECT
Feedback        incorrect gives feedback if the student answers a question incorrectly. This element can reside inside the QUIZ element to give a global feedback on incorrect answers or inside a QUESTION tag to give feedback if the specific question is answered incorrectly.
Atts:           None
SubElements:    None

FEEDBACKPARTCORRECT
Feedbackpartcorrect gives feedback if the student answers a question partly correctly. This element can reside inside the QUIZ element to give a global feedback on partly correct answers or inside a QUESTION tag to give feedback if the specific question is answered partly correctly.
Atts:           None
SubElements:    None

PAGE
The page element defines what type of page to use and it allows for customization of individual pages.
Atts:   STYLE (opt.) defines what type of page to use. The possible values are INTRO (introduction page with title, subtitle and intro textfield), MENU (menu page), SUM (summary page) and QUEST (question pages).
The attributes SCOREBUTTON (opt.), SCOREFIELD (opt.), FEEDBACKFIELD (opt.) and NAVBUTTONS (opt.) define whether the corresponding objects should be defined for the questions on this page.
NAME (req.) is the name of the question.
The attributes TEXTFIELD and INTROTEXTFIELD define whether the corresponding objects should be included on the page.
SubElements:    A page can contain one or more QUESTIONs.

TITLE
The title element gives a global name for all the questions in the quiz. If the value of this element contains #N#, for example Question #N#, the #N# will be replaced by numbers running from 1 to n where n is the number of questions in the quiz.
Atts:           None
SubElements:    None

SUBTITLE
The subtitle element gives a global subtitle for all the question pages in the quiz. If the value of this element contains #N#, for example Section #N#, the #N# will be replaced by numbers running from 1 to n where n is the number of question pages in the quiz.
Atts:           None
SubElements:    None

RANDOM
Random globally defines whether the answers to the questions should be randomized or not. This element can be overridden by a questions random attribute.
Atts:           None
SubElements:    None

TRIES
The TRIES element globally sets the number of times the student can change his answer while on that page. This value will be reset once the student leaves the page.
This element can be overridden by the question tries attribute.
Atts:           None
SubElements:    None

MULTICORRECT
The MULTICORRECT element globally defines whether the multiple-choice questions in the quiz can have more than one correct answer.
This element can be overridden by the question multicorrect attribute.
Atts:           None
SubElements:    None

MAXSCORE
The MAXSCORE element globally defines the maximum score for the questions in the quiz. This element can be overridden by the question maxscore attribute.
Atts:           None
SubElements:    None

AUTORESET
The AUTORESET element globally defines whether the question widget on a page should be automatically reset. The possible values for this element is; True (the question will be reset both on the entry and exit of the page), False (the question will never be reset), enterPage (the question will be reset on the entry of the page), leavePage (the question will be reset when the page is left), ONCE (the question will be reset once). This element can be overridden by the question autoreset attribute.
Atts:           None
SubElements:    None

AUTOLOCKANSWERS
If set to true, autolockanswers globally set number of tries on the questions to 1. This element overrides the tries element, and it can be overridden by the question autolockanswers attribute.
Atts:           None
SubElements:    None

DELAYEDFEEDBACK
The subtitle element gives a global subtitle for all the question pages in the quiz. If the value of this element contains #N#, for example Section #N#, the #N# will be replaced by numbers running from 1 to n where n is the number of question pages in the quiz.
Atts:           None
SubElements:    None

SCORED
The scored element globally sets whether the questions in the quiz should be scored or not. This element can be overridden by the question scored attribute.
Atts:           None
SubElements:    None

QUESTION
The question element defines a question with a question text and a few answers.
Atts:   TYPE (opt.) defines the type of the question. The possible values are NONE (plain question), FIB (fill in the blank field), TFB (True/False button), TFC (True/False check boxes), MCB (Multiple choice buttons), MCF (Multiple choice fields), MCR (Multiple choice radio buttons), MCC (Multiple choice check boxes), and RMC (Rate by multiple choice).
Questions also have the following attributes explained in further detail above, TITLE, SUBTITLE, MULTICORRECT, DELAYFEEDBACK, CHANGEANSWER
, TRIES, RANDOM, and TEXT.
SubElements:    A question contains one or more ANSWERs and optionally one or more of the FEEDBACK elements.

ANSWER
The answer element contains the answer text for a question.
Atts:   CORRECT (opt.) defines whether the answer is correct or not. The question can also have a WEIGHT (opt.) defining how correct or incorrect the answer is.
SubElements:    None


4.1.2.4 Advantages and Disadvantages


The Quiz Markup language can only model one type of question, multiple-choice questions (true/false questions are only a subset of m-c questions), and this is a big limitation for at distance education markup language.
On the other hand the quiz markup language handles the number of attempts allowed on each single question, and not many of the other distance learning markup language contain this vital information.
        One disadvantage to the Quiz markup language is that it breaks one of the basic rules for XMLs, it does not separate the contents from the formatting since the instructor has to define whether the question should be displayed using radiobuttons, checkboxes or textfields.


4.1.3 QuizzIT


4.1.3.1 Developers


Lucio Cunha Tinoco ]developed QuizzIT at Virginia Technical Institute.


4.1.3.2 Description


QuizzIT is derived from SGML and it was developed to provide a powerful and easy-to-use authoring tool for writing WWW-based, multiple-choice-type tests.
QuizzIT provides means for adapting quizzes based on the performance of the students.


4.1.3.3 Structure


shows the structure of a quiz created with the QuizzIT language.

17









Figure Quizzit structure


4.1.3.3.1 Elements

QUIZ

QUIZ is the outermost tag of every QuizzIT document.
Atts:   HTML (Opt.) specifies the target HTML document.
GRADER (Opt.) specifies which automated grader to use.
ROLL (Opt.) specifies a class roll file, and ID (Req.) gives the quiz a unique id.
SubElements:    The QUIZ element can contain a TITLE, an INSTRUCTION and one or more QUESTION-GROUPs

TITLE
The TITLE element defines the title of the quiz.
Atts:           None
SubElements:    None

INSTRUCTION
INSTRUCTIONs to the student about how the test will be conducted can be entered in the INSTRUCTION tag.
Atts:   None
SubElements:    Zero or more paragraphs (P)

QUESTION-GROUP
A QUESTION-GROUP is a group of questions meant to be taken together. Reply actions can be specified for question groups.
Atts:   ID (Opt.) allows the author to set a unique identifier for the QUESTION-GROUP.
NEXT (Opt.) defines which QUESTION-GROUP has to be taken after this one.
SubElements:    Zero or more questions (MCHOICE, MATCHING, TRUEFALSE, FILLIN) along with a REPLY action.

QUESTION
The QUESTION element is not an actual element, it should be replaced by MCHOICE, MATCHING, TRUEFALSE or FILLIN depending on the question you want to create.
Atts:   ID (Req.) is the unique identifier for each question
SubElements:    A question contains a DESCRIPTION, one or more ANSWERs and zero or more HINTs.

REPLY
The REPLY element defines the action to be taken when the questions have been answered incorrectly.
Atts:   QUIZID (Opt.) is a pointer to the quiz the student has to take if the CUTOFF point is not reached.
CUTOFF (Opt.) is the number of point the student has to receive on this QUESTION-GROUP to pass it.
SubElements:    A REPLY can contain one of the following sub elements: MAIL, COMMENT or QUIZ.

MAIL
This element defines a MAIL that will be sent to the student when all the QUESTIONs in the QUESTION-GROUP are answered and the CUTOFF point is reached.
Atts:   CC (Opt.) is a mail address to which copies of the mail should be sent.
SUBJECT (Req.) states the subject of the email.
SubElements:    The MAIL element can contain zero or more paragraphs (P)

COMMENT
This element defines a COMMENT that will be shown to the student when all the QUESTIONs in the QUESTION-GROUP are answered and the CUTOFF point is reached.
Atts:           None
SubElements:    The COMMENT element can contain zero or more paragraphs (P)


4.1.3.4 Examples


shows an example of a quiz with two multiple choice questions and one matching question, created in the QuizzIT language.
<!DOCTYPE QUIZ SYSTEM "quiz.dtd">
<QUIZ ID="quizAB.sgml">
<TITLE>Quiz -- Unit AA</TITLE>
<INSTRUCTION>
  <P>
   You should take this quiz now, and submit your answers   
   as soon as you are done. This should take less than 90
   minutes (i.e., do not spend more time than that). You
   can refer to your notes and the readings (textbook,
   articles).
  </P>
  <P>
   The Honor Code is in effect. All work on this quiz    
   should be your own. Do NOT send a copy of your answers
   to anyone else, or look at anyone else's answers,
   anytime during this course.
  </P>
</INSTRUCTION>
<QUESTION-GROUP>
  <MCHOICE ID="q0001">
   <DESCRIPTION>
    <P>
     Which country won the first soccer World Cup, in
     1930?
    </P>
   </DESCRIPTION>
   <ANSWER VALUE="WRONG" LABEL="a">
    <P>Brazil.</P>
   </ANSWER>
   <ANSWER VALUE="WRONG" LABEL="b">
    <P>Germany.</P>
   </ANSWER>
   <ANSWER POINTS="10" LABEL="c">
    <P>Uruguay.</P>
   </ANSWER>
   <HINT>
    <P>
     This country has won the World Cup twice.
    </P>
   </HINT>
  </MCHOICE>
  <TRUEFALSE ID="q0002">
   <DESCRIPTION>
    <P>
     Please assign T or F to each one of the questions.
    </P>
   </DESCRIPTION>
   <ANSWER VALUE="FALSE" LABEL="a">
    <P>
     Brazil has disputed the total of 4 World Cup finals
    </P>
   </ANSWER>
   <ANSWER VALUE="FALSE" LABEL="b">
    <P>
     World Cup 1982 was in Italy.
    </P>
   </ANSWER>
   <ANSWER VALUE="TRUE" POINTS="10" LABEL="c">
    <P>
     Paolo Rossi was the goaler of 1982.
    </P>
   </ANSWER>
  </TRUEFALSE>
  <REPLY CUTOFF="10" QUIZID="quizAC.sgml"></REPLY>   
</QUESTION-GROUP>
<QUESTION-GROUP ID="researchareas">
  <MATCHING ID="q0004">
   <DESCRIPTION>
    <P>Match the following items:</P>
    <ITEM MATCHES="b"><P>Dr. Fox</P></ITEM>
    <ITEM MATCHES="a"><P>Dr. Ehrich</P></ITEM>
    <ITEM MATCHES="c"><P>Dr. Roach</P></ITEM>
   </DESCRIPTION>
   <ANSWER POINTS="5" LABEL="a">
    <P>Picture Processing</P>
   </ANSWER>
   <ANSWER POINTS="5" LABEL="b">
    <P>IS and Retrieval</P>
   </ANSWER>
   <ANSWER POINTS="5" LABEL="c">
    <P>Robots</P>
   </ANSWER>
  </MATCHING>
</QUESTION-GROUP>
</QUIZ>
Figure Example of Quizzit XML

This example was taken from the web site .


4.1.3.5 Advantages and Disadvantages


The big advantage of this language is that it allows the creator of the quiz to define actions depending on the student's capability to answer the questions.
The creator of the quiz also has the capability to give the student hints about the questions.
A disadvantage of this language is that you can not reuse the questions since they are defined inside question-groups, therefore it is difficult to create a tool that can use the same questions in different quizzes.


4.1.4 TML (Tutorial Markup Language)


4.1.4.1 Developers


TML was developed by Daniel Brickley ] at the University of Bristol (United Kingdom). Daniel Brickley is also a member of the Question Interoperability Group.


4.1.4.2 Description


The Tutorial Markup Language is derived from SGML rather than from XML but it can easily be converted to an XML derivative.
        The language handles 4 different types of questions, and it also handles actions to be taken if the user answers the questions right or wrong. The language also handles hints.


4.1.4.3 Structure


The structure of the Tutorial Markup Language is very straightforward and easy to understand.





Figure TML structure


4.1.4.3.1 Elements

TML

TML is the outermost tag of every TML document.
Atts:           None
SubElements:    One or more TUTORIALs

TUTORIAL
TUTORIAL is the element that defines every tutorial.
Atts:   ACTION (Opt.) defining any action to be taken at the beginning of the tutorial.
SubElements:    One or more QUESTIONs

QUESTION
The QUESTION element defines a question.
Atts:   TYPE (Req.) can be Multiple-choice, Poly-choice, Word-Match or Hot-image.
ATTEMPTS (Opt.) is the number of attempts allowed answering this question. The default number is 3.
NAME (Opt.) provides a textual name for this question.
SubElements:    Every QUESTION must contain one and only one of the following elements: CHOICES, HINTS, RESPONSES and SCORE.

CHOICES
The CHOICES element is the base element for the different answer choices of the QUESTION it belongs to.
Atts:   CONTINUE (Opt.) instructs the viewer to continue numbering choices from the previous number rather than restarting at number 1.
SEQNUM (Opt.) instructs the viewer to start numbering the choices with the number n.
WRAP (Opt.) is a hint to the viewer requesting multi-column display of choice lists. It must equal 'vert', 'horiz' or 'none'.
RANDOMISE (Opt.) if set the order of the choice tags of the question is randomized.
SubElements:    Every CHOICES element contains one or more CHOICE elements.

CHOICE
The CHOICE element represents one of the possible choices for the wrapping QUESTION.
Atts:   SKIP (Opt.) instructs the viewer to skip n values in the numbering of the choices.
OPTION (Opt.) gives this choice a textual name such as a. instead of a number.
MATCH (Opt.) defines how close the match has to be between the user input and the actual answer. (exact is case insensitive but every character has to match, fuzzy means that the word can be misspelled by one character and regexp allows you to use wildcards.
ISCORRECT (correct, incorrect or close) (Opt.) defines how accurate this answer is.
The default value is incorrect.

HINTS
The HINTS element is a wrapper for the hints to one particular question.
Atts:           None
SubElements:    A HINTS element can contain one or more HINTs.

HINT
A HINT will be shown every time the user requests one, using the LOSE element the tutorial developer can set how many points will be deducted for using a HINT.
Atts:           None
SubElements:    None.

RESPONSES
RESPONSES are used to give the student feedback on its responses.
Atts:           None
SubElements:    One or more WHEN elements must be present inside the RESPONSES element.

WHEN
The WHEN element instructs the viewer about when to give feedback and what feedback to give.
Atts:   CONDITION (Opt.) (correct, incorrect, close or complete) defines when to give feedback. Complete means that the student has exhausted the number of attempts allowed or that the student has answered the question correctly. The default value is Incorrect.
OPTION (Opt.) also defines when to give feedback. Feedback is given if the user has answered with option = o
ATTEMPT (Opt.) defines that feedback should be given when the user makes an attempt at this question for the nth time.
SubElements:    None.

SCORE
SCORE instructs the viewer about how many points to add for a correct answer or how many points to deduct for a hint etc.
Atts:           None
SubElements:    One or more of either the GAIN or the LOSE element.

GAIN
The GAIN element instructs the viewer to add points to the total score.
Atts:   CONDITION (Opt.) can be correct or close. Default is correct.
VALUE (Opt.) defines how many points to add to the total score. Default is 1.
ATTEMPT (Opt.) defines for which attempt this score gain is valid.
OPTION (Opt.) defines for which option this score gain is valid.
SubElements:    None

LOSE
The LOSE element instructs the viewer to deduct points from the total score.
Atts:   CONDITION (Opt.) can be hint, incorrect or close. Default is incorrect.
VALUE (Opt.) defines how many points to deduct from the total score. Default is 1.
ATTEMPT (Opt.) defines for which attempt this score loss is valid.
OPTION (Opt.) defines for which option this score loss is valid.
SubElements:    None

4.1.4.4 Examples


shows a simple example with two of the four different types of questions that can be represented in TML. This example is taken from the web site.
<TML>
<HEAD>
  <TITLE>Sample tutorial</TITLE>
</HEAD>
<BODY>
  <H2>This is an example tutorial for Chemistry</H2>
   <p>This is the introductory page to a sample tutorial. Typically it   
   would display the aims, requirements, and credits for the tutorial.   
   </p>
</BODY>
<TUTORIAL>
  <INDEX>
   <META NAME="DC.Author" CONTENT="Joel Crisp"/>
   <META NAME="DC.Title" CONTENT="Demonstration TML
                                      Tutorial"/>
   <META NAME="Level" CONTENT="Year 1"/>
  </INDEX>
  <QUESTION TYPE="Multiple-Choice" ATTEMPTS="2">    
   <p>What is the capital of England? </p>
   <CHOICES>
    <CHOICE ISCORRECT="correct" OPTION="a">
London
    </CHOICE>
    <CHOICE OPTION="b">Bristol</CHOICE>
    <CHOICE ISCORRECT="close" OPTION="c">
     Brussels
    </CHOICE>
    <CHOICE OPTION="c">Manchester</CHOICE>
   </CHOICES>
  <SCORE>
   <GAIN CONDITION="correct" VALUE="3" ATTEMPT="1"/>
   <GAIN CONDITION="correct" VALUE ="1" ATTEMPT="2"/>
   <LOSE CONDITION="hint" VALUE ="1">
  </SCORE>
  <RESPONSES>
   <WHEN OPTION="b">No, Bristol is the other side of the
                      country to the capital.
   </WHEN>
   <WHEN CONDITION="incorrect" >
    Sorry, that is not the correct answer. Maybe you s
    should ask for a hint.
   </WHEN>
   <WHEN CONDITION="correct" >
    <b>Congratulations, that is correct</b>!
   </WHEN>
  </RESPONSES>
  <HINTS>
   <HINT>
    Brussels is the administrative center of the EEC
   </HINT>
   <HINT>It begins with an 'L'</HINT>
   </HINTS>
  </QUESTION>
  <QUESTION TYPE="Poly-Choice" ATTEMPTS="3">
   <p>Please select the two options which best describe
      HTML:</p>
   <CHOICES>
    <CHOICE ISCORRECT="correct" OPTION="a">
     An SGML compliant markup language
    </CHOICE>
    <CHOICE OPTION="b">
     A Turing complete programming language</CHOICE>
    <CHOICE OPTION="c">
     A page description language</CHOICE>
    <CHOICE ISCORRECT="correct" OPTION="d">
     A semantic content definition language</CHOICE>
    <CHOICE OPTION="e">
     An object orientated graphics language</CHOICE>
<!-- Note that more than one choice is marked correct -->
   </CHOICES>
   <SCORE>
    <GAIN CONDITION="correct" VALUE="3" ATTEMPT="1"/>
    <GAIN CONDITION="correct" VALUE="1" ATTEMPT="2"/>
    <GAIN CONDITION="close" VALUE="1" ATTEMPT="1"/>
    <LOSE CONDITION="hint" VALUE="1"/>
   </SCORE>
   <HINTS>
    <HINT>
     HTML does not define the absolute page position of an element.
    </HINT>
    <HINT>
     HTML is a text based description not a graphical one.
    </HINT>
    <HINT>
     You have lost 3 points asking for hints so far....
    </HINT>
    <HINT>
     Asking for too many hints can leave you with a negative score!
    </HINT>
   </HINTS>
   <RESPONSES>
    <WHEN CORRECT>
     <b>Congratulations, you have got both answers
     right.</b>
    </WHEN>
    <WHEN CONDITION="close" >
     You have got one of the two answers correct.       
    </WHEN>
    <WHEN CONDITION="incorrect">
     Both of your answers are wrong.
    </WHEN>
   </RESPONSES>
  </QUESTION>
</TUTORIAL>
</TML>
Figure TML Example


4.1.4.5 Advantages and Disadvantages


The Tutorial Markup Language has many good features such as the ability to give the user hints and point deductions if the user chooses to use the hints. It is very simple and straightforward. The Tutorial Markup Language also has some very nice feedback features.
The Tutorial Markup Language is not able to represent the actual scores that the user gets and a lot of the information about the creation of the tutorial and the questions are lost. There is also no ability to store individual questions for reuse in other tutorials.


4.1.5 Instructional Management Systems (IMS)


4.1.5.1 Developers


The IMS project group.


4.1.5.2 Description


The IMS DTDs are developed using Microsoft XML-Data, which is described in further detail in chapter 3.  
IMS has developed DTD's for each of the following areas: Multiple Choice Tests, Multiple Choice Test Answers, Performance Data, Notifications and Navigation.


4.1.5.3 Structure


4.1.5.3.1 Multiple Choice Test

shows the structure of the IMS multiple-choice test markup language.





Figure IMS MC-Test Structure

MC-TEST

The MC-TEST element is the outermost element of the test.
SubElements:    It can contain a TITLE and one or more ITEMs.

TITLE
The TITLE element gives the test a name.
SubElements:    None

ITEM
An ITEM is defined as one Multiple-Choice question.
SubElements:    An ITEM has a NUMBER a statement (STEM), a CORRECT answer and one or more wrong answers (DISTRACTORs).

NUMBER
The NUMBER defines the number of the question
SubElements:    None

STEM
The statement of the question is written in the STEM element.
SubElements:    None

DISTRACTOR
A DISTRACTOR is an answer that is incorrect.
SubElements:    None

CORRECT
The correct answer to the question is given in the CORRECT element.
SubElements:    None


4.1.5.3.2 Multiple Choice Test Answers

The structure of the IMS multiple-choice test answers markup language is shown in .

18





Figure IMS MC-Test Answers structure

MC-TEST

The MC-TEST element is the outermost element of the test.
SubElements:    It can contain a TITLE, the creation DATE and the name of the GIVER but it must also contain the name of the TAKE and one or more ITEMs.

TITLE
The TITLE element gives the test a name.
SubElements:    None

TAKER
The TAKER identifies the student taking the test
SubElements:    None

GIVER
The GIVER identifies the instructor giving the test
SubElements:    None

ITEM
An ITEM is defined as one Multiple-Choice question.
SubElements:    An ITEM has a NUMBER, a TENDERED answer (the answer the student gave) and a CORRECT answer.

NUMBER
The NUMBER defines the number of the question
SubElements:    None

TENDERED
The TENDERED answer is the answer the student given by the.
SubElements:    None

CORRECT
The correct answer to the question is given in the CORRECT element.
SubElements:    None


4.1.5.3.3 Performance-Data

The structure of the IMS performance data is given in .

19




Figure IMS Performance-Data structure

ITEM

The ITEM element is the outermost element in a performance file
SubElements:    A ITEM element contains one each of the following: CONTENT-IDENTIFIER, PERFORMANCE-CODING, PERFORMANCE and an ISSUED-BY element. It may or may not include the following: BEGIN-DATE-TIME, END-DATE-TIME, RECEIVED-BY and a CERTIFICATE-IDENTIFIER.

CONTENT-IDENTIFIER
The CONTENT-IDENTIFIER is a code for the assignment, class etc to which this performance pertains.
SubElements:    None

PERFORMANCE-CODING
The PERFORMANCE-CODING identifies the scale to be used. An example of a scale is "US-NYS-LETTER-GRADE" which means that the student are graded with grades from A-F where A is the best grade.
SubElements:    None

PERFORMANCE
The PERFORMANCE element shows the actual grade or performance given to the student.
SubElements:    None

ISSUED-BY
ISSUED-BY is the person or institution that has issued the performance.
SubElements:    None

BEGIN-DATE-TIME
BEGIN-DATE-TIME indicates from which date and time this performance is valid.
SubElements:    None

END-DATE-TIME
END-DATE-TIME indicates the expiration date of this performance if the performance is only valid for a limited time like the GRE score.
SubElements:    None

RECEIVED-BY
The RECEIVED-BY element holds the name of the student for which the performance is issued.
SubElements:    None

CERTIFICATE-IDENTIFIER
The CERTIFICATE-IDENTIFIER allows the performance creator to give the certificate a unique identifier.
SubElements:    None

4.1.5.3.4 Notification and Navigation


The structure of the IMS notification markup language is given in .





Figure IMS Notification Structure

The structure of the IMS navigation markup language is shown in .







Figure IMS Navigation Structure

DOMAIN-TYPE

The DOMAIN-TYPE specifies the area that the notification or navigation is about.
SubElements:    None

EVENT-TYPE
The EVENT-TYPE is usually NOTIFICATION.
SubElements:    None

EVENT-NAME
The EVENT-NAME defines the name of the event. This can be assessment, navigation etc.
SubElements:    None

HEADER
The HEADER specifies where to send the notification and what the subject of the notification should be.
SubElements:    The HEADER element contains one of each of the following elements: TO, FROM and RE (Subject).

FILTERABLE-DATA
There is no information about the FILTERABLE-DATA in the documentation of IMS.
SubElements:    The FILTERABLE-DATA contains a DATE element.

BODY
The BODY of the notification or navigation contains the actual information about the event.
SubElements:    In the case of a NAVIGATION the BODY has two sub elements: SIGNPOST and STARTTIME.
        In the case of a NOTIFICATION the BODY has three sub elements: NUMQUEST, NUMCORRECT and PCT-SCORE.

TO
TO specifies who should get the notification.
SubElements:    None

FROM
FROM specifies who the notification is from.
SubElements:    None

RE
RE specifies a subject for the notification
SubElements:    None

DATE
The DATE element gives information about when the notification was created.
SubElements:    None

NUMQUEST
NUMQUEST defines the number of questions that were in the assessment.
SubElements:    None

NUMCORRECT
The NUMCORRECT element defines the number of the questions in the assessment that the student answered correct.
SubElements:    None

PCT-SCORE
PCT-SCORE specifies how many percent of the questions in the assessment were answered right.
SubElements:    None

SIGNPOST
A SIGNPOST is a action point specified by the instructor. This can be the start of the test, when a certain question is answered etc.
SubElements:    None

STARTTIME
STARTTIME defines when the SIGNPOST was reached.
SubElements:    None


4.1.5.4 Examples


through show examples of class data modeled in the IMS markup languages.
MULTIPLE CHOICE TEST

<?xml:namespace name="http://www.ims.org/schemas/tests/" as="test"/>
<test:GeoTest>
<mc_test>
  <title>Midwest Geography Test</title>
  <item>
   <number>1</number>
   <stem>The Capital of Iowa is</stem>
   <distractor>Storm Lake</distractor>
   <distractor>Sioux City</distractor>
   <correct>Des Moines</correct>
  </item>
  <item>
   <number>2</number>
   <stem>Lake Okoboji is located in</stem>
   <distractor>Kansas</distractor>
   <distractor>Missouri</distractor>
   <distractor>Minnesota</distractor>
   <correct>Iowa</correct>
  </item>
</mc_test>
</test:GeoTest>
Figure IMS MC-Test Example


20

MULTIPLE CHOICE TEST ANSWERS

<?xml:namespace name="http://www.ims.org/schemas/answers/" as="answers"/>
<answers:GeoTest>
<mc_test>
  <title>Midwest Geography Test</title>
  <taker>Bob Alcorn</taker>     
  <date>19980528</date>
  <giver>Ken Schweller</giver>
  <item>
   <number>1</number>
   <tendered>Storm Lake</tendered>
   <correct>Des Moines</correct>
  </item>
  <item>
   <number>2</number>
   <tendered>Iowa</tendered>
   <correct>Iowa</correct>
  </item>
</mc_test>
</answers:GeoTest>
Figure IMS MC-Test Answers Example

PERFORMANCE-DATA

<?xml:namespace name="http://www.ims.org/schemas/performance/" as="perf"/>
<perf:GeoTest>
<item>
  <content-identifier>
   BVU-GEOLOGY-01-MOD-1234
  </content-identifier>
  <preformance-coding>
   US-NYS-LETTER-GRADE
  </performance-coding>
  <performance>C</performance>
  <issued-by>BUENA-VISTA-UNIVERSITY</issued-by>
</item>
</perf:GeoTest>
Figure IMS Performance example


21

NOTIFICATION

<?xml:namespace name="http://www.ims.org/schemas/notifications/" as="notif"/>
<notif:testscore>
<domain-type>EDUCATION</domain-type>
<event-type>NOTIFICATION</domain-type>
<event-name>ASSESSMENT</event-name>
<header>
  <to>DR-SCHWELLER</to>
  <from>MW-GEO-TEST     </from>
  <re>BOB-ALCORN</re>
</header>
<filterable-data>
  <date>19980528</date>
</filterable-data>
<body>                
  <numquest>2</numquest>
  <numcorrect>1</numcorrect>
  <pct-score>50</pct-score>
</body>
<notif:testscore>
Figure IMS Notification example

NAVIGATION

<?xml:namespace name="http://www.ims.org/schemas/navigation/" as="nav"/>
<nav:testscore>
<domain-type>EDUCATION</domain-type>
<event-type>NOTIFICATION</event-type>
<event-name>NAVIGATION</event-name>
<header>
  <to>DR-SCHWELLER</to>
  <from>MW-GEO-TEST</from>
  <re>BOB-ALCORN</re>
</header>
<filterable-data>
  <date>19980528</date>
</filterable-data>
<body>        
  <signpost>START-TEST</signpost>        
  <starttime>19981105T08:15:5</starttime>
</body>
<nav:testscore>
Figure IMS Navigation example


4.1.5.5 Advantages and Disadvantages


The IMS schemas are not complete and therefore a lot of important information is missing. For example, only one type of question can be marked up with the IMS schemas and the multiple-choice questions can only have one correct answer.


4.2 Overview of Stored Information


Any course, whether it is a traditional course taught in a classroom or a course taught as a distance learning course over the Internet, is built of a few basic units. These units are a) general information about the course, b) a schedule, c) assignments to test the students knowledge and d) the results achieved by the student.

22












Figure The structure of a general course

The basic elements and their connections are shown in .
Most of the initiatives reviewed in section model only one of these basic parts, the assignment part. There are two reasons why they have chosen to model only the assignment part, a) assignments and questions are reusable in the sense that many different courses can use the same questions while course information and schedules are course specific and b) the initiatives reviewed in section should be used only as a complement to other course material, for creating assignments.
SATML expands the use of XML for distance learning by not only modeling the assignments but also course information, student assessments, and schedules.
The reason for doing this is that this information already exists in course development tools such as WebCT and CyberProf, and by modeling this information in XML, instructors can custom build course web sites for their students to improve the students learning experience by using simple XSL files.
There is also a second reason for modeling course information. The IMS search engines enables students all over the world to find courses saved in SATML, using the information stored in the meta data tags.
Note that all the files are optional and to use the SATML file format, tools only need to save the files that are necessary for that particular tool.


4.3 SATML design


After reviewing course development tools and different SGML/XML implementations of assignments, the decision was made to design SATML as a number of different files following the structure of the general course shown in . The design decisions for the separate files were then made based on information gathered when reviewing the IMS Specification ], the different assignment implementations, the course development tools, and the general XML design decisions provided in section .
Special consideration was taken to the question files since the representation of the questions and assignments are really the core of the SATML language.
The details of the different files are described in the following sections along with a list of the tags used.


4.3.1 Course Information


Every course has a set of meta-data that should be stored. The meta-data is the general description of the course, which can be used to create the syllabus or the course homepage. There should be one and only one meta-data file for every course. Since there are not dates present in the meta-data file, the file can be reused for more occurrences of the same course. The elements of the meta-data file and their descriptions are shown in .

23

Table Course Information

Element Example Description
Title Internet Development A short description of the course
Subject Software Engineering Topic of the course
Learning Level Age=0-99
0 => N/A
Skill = 0-5
0 => N/A
The minimum age and skill of the student
Description This course will provide the student with an introduction to XML, HTML and Java A more lengthy description of the course
Keywords XML, Internet, Java, HTML Keywords used when the student wants to search for a course
Language en-US
(US English)
The language in which most of the material for the course is written
Identifier
(Course Code)
EEL5937 The course identifier
Publisher
(Institution)
Computer Engineering The entity responsible for delivering the course materials
Agent
(Contact)
Ron Eaglin The entity responsible for determining the rights of the learning material
Location
(URL)
http://engr.ucf.edu/eel5937.html The location where you can find the course homepage
Presentation Text, video, projects The format in which most of the material is presented
Format HTML, Word, PowerPoint, PDF, GIF, AVI etc. The format of the documents presented in this course. This field is used to determine what software is needed to show the material.
Element Example Description
Container Type IMS Base, Item, Module, Tool The structure of the course
Publication Date 08/02/98 The date the resource was first published
Platform Windows-based or Mac computer and a 14.4 or faster modem. You also need a SLIP/PPP account with an Internet service provider The software and/or hardware required to be able to follow the course
User Support Yes/No Tells if the user can get support or not
Version 0.00 - 1000.00 The version number of the course as a floating point number
Interactivity Level High/medium/low The level of interactivity between the user and the container
Last Modified Date 08/02/98 Date when the course was last modified
Role University - Graduate The role of the course
Objectives   The objectives of the course
Creator* Fname    Ron
Minitial F
Lname    Eaglin
Email    reaglin...
Phone    823-5248
Hours    W 10-11
Hours    F 1-3
Information about the creator(s) of the course
Contributor* Dr Linux E Unix Names of other people that have helped with the development of the course
Source   Source of documents or literature that the material for this course was taken from
Use Rights Allowed/Not Allowed User rights to this container
Element Example Description
Expiration Date 08/07/98 Date when this resource is outdated
Dates Link to schedule Important dates for this course and a description for each date
Grade-Limit* Percentage=90
Grade=A
Percentage needed to get a specific grade

4.3.2 Assignments


Every instance of a course can have as many assignments as necessary. An assignment can be a quiz, an exam, a homework assignment or any other assignment. It contains one or more tasks that need to be completed to complete the assignment. Every assignment can be graded either manually or automatically depending on the nature of the tasks. An assignment file does not contain any links to the course for which it was created, and therefore the assignments can be reused in other courses. shows the elements that are used to build the assignment file.
Table Assignment elements

Element Example Description
Type Homework, quiz, project, exam Type of assignment
Time Percentage=20
Interval
=1
IntervalUnit
=day
The amount of
points that will be deducted for late answers
Time Limit Value=2
Unit
=day
Time the assignment will be available from the time it is opened
Author Fname  Teresa
Lname  Ferrandez
The author of the assignment
Element Example Description
Constraints Open Book Constraints on what aids are permitted to solve the task
Attempts 3 Number of attempts allowed
Attempt
Deduction
10% Percent deduction for each attempt
Scoring Avg/min/max How the score is to be calculated based on the scores on the different attempts
TASK    
Percentage 10% This tasks importance in the assignment. The total of all the tasks in the assignment should add up to 100%
Content   Can be text or a link to a question
Grading Automatic/manual How the assignment will be graded
Hint Text
Deduction
=2%
A hint to help the student solve the task and the deduction the student gets for using the hint


4.3.3 Questions


A question is a specific sort of task that is mostly used in quizzes. It has the ability to be automatically graded which makes it a very essential entity.
There are four different types of questions in SATML: the multiple-choice question, the short answer question, the calculated question and the matching question.
shows the four different types of questions along with their sub elements and attributes.
Table Question elements

Element Example Description
MULTIPLE-CHOICE    
Title Question 1 The title of the question
Pdate 08/02/98 The date the question was first pulbished
Category Internet The category this question belongs to. This is to make it easier to find the right questions for your quizzes
Level? Age=15
Skill
=2
The average age and skill needed to be able to answer the question
Statement How many headings are there in HTML code? The question text
MCAnswer+ 6 Possible answer for the question. You should have at least 2 answers to a muliple choice question
SHORT-ANSWER    
Title Question 2 The title of the question
Pdate 08/02/98 The date the question was first pulbished
Category Internet The category this question belongs to. This is to make it easier to find the right questions for your quizzes
Level? Age=15
Skill
=2
The average age and skill needed to be able to answer the question
Statement How many headings are there in HTML code? The question text
SAAnswer* Six Possible answer to the short answer question
     
Element Example Description
CALCULATED    
Title Question 3 The title of the question
Pdate 08/02/98 The date the question was first published
Category Physics The category this question belongs to.
Level? Age=15
Skill=1
The average age and skill needed to be able to answer the question.
Statement If a car goes {x} miles in {y} hours, how many miles per hour does the car go? The question text. The variables {x} and {y} will be replaced by actual numbers when the question is displayed
Formula {x}/{y} The formula used to calculate the right answer
Variable+ X
Y
The variables used for this question
Canswer --- Data about the answer of the question
Unit Miles/hour The unit of the answer
MATCHQUESTION    
Title Question 4 The title of the question
Pdate 08/02/98 The date the question was first published
Category Comics The category this question belongs to.
Level? Age=5
Skill=2
The average age and skill needed to be able to answer the question
Statement Match the following Disney characters with their last names The question text
MatchElement+ Donald - Duck
Minnie - Mouse
Mortimer - Goose
Mickey - Mouse
The statement and the match that corresponds to that statement.


4.3.4 Assessments


An assessment file contains data about the progress made by a particular student in a class. There is one assessment file per student and class.
The granularity level of the assessment file is assignment. Information about the students answer on a particular question is only stored within the tool.
Since SATML is intended to be used in different school systems with different grade scales, the assessment files also contain information about the grade codes.
contains a list of all the elements present in the assessment files.
Table Assessment Elements

Element Example Description
METADATA    
Fname Teresa The name of the student to which this assessment applies.
Minitial? E The middle initial of the student.
Lname Ferrandez The last name of the student.
SSN? 123-45-6789 The student id number given to the student (or other identification)
Course EEL5937 Course identifier to which this assessment pertains
ASSIGNMENT*    
Task   Link to assignment
Performance 100 Percentage of the possible score on this assignment
Element Example Description
TOTAL-GRADE    
Performance-coding A-F A code telling which grades can be given
Performance A The actual grade that was given to the student
Publication-date 08/02/98 The date this grade was published
Expiration-date? 08/02/00 The date this grade expires


4.3.5 Course Schedules


The course schedules are different for every instance of the course and they contain information about lectures, project deadlines and assignments. The elements present in the course schedule files are described in .
Table Schedule Elements

Element Example Description
Course EEL5937 Course identifier to which this assessment pertains
ASSIGNMENT*    
Title HTML - Assignment1 Title or brief description of the assignment.
Content Assignment1.sml A reference to a file containing the assignment.
Given-Date 12 May, 1998 The date the assignment was given.
Due-Date 19 May, 1998 The date the assignment is due.
Weight 1 The number of percent of the total grade that this assignment is worth.

 

   
Element Example Description
MATERIAL*   A reference to material (books, articles, web sites) used in this course.
Title Core Java 1.1 - Fundamentals The title of the material.
Content ISBN="0-13-766965-8" ISBN or reference to the material.
Author+ Cay S. Hortsmann The author of the material.
LECTURE*   Information about the course lectures.
Title Introduction to the Internet A short description of the lecture
Location ENGR124 Room or URL where the lecture will be held
Date 12 May, 1998 The date the lecture will be held
Time 10.00 am The time the lecture will be held
Duration 120 The duration of the lecture in minutes.
DEADLINE*    
Title Initial Project Concepts due A short description of the deadline
Date 4 Jun, 1998 The date of the deadline.


4.4 SATML Versions


4.4.1 Version 1


The first version of SATML contained only assignment files with embedded questions. There were four types of questions: multiple choice, matching questions, calculated questions, and short answer questions. The instructors were not able to include hints or help to the question but they were able to provide feedback. WebCT largely influenced the draft for the first version of SATML.
The DTD and an example file using the first version of SATML can be found in Appendix B.


4.4.2 Final version


The final version of SATML contains 5 different types of files as described in section . The question DTD has been improved by adding the ability to give the students hints, deleting the information of the creator of the question since it turned out to be irrelevant and storing the questions separately from the assignments to make them more reusable.
In addition to this SATML has expanded from only concerning questions and assignments to take care of the whole class concept.
24


CHAPTER5 Development of database converter


The Database converter is a tool that filters the SATML files to a database and vice versa. The converter has been implemented for the SATML assignment files since these are the only files that should be distributed to other courses and universities. The converter is designed so that it can easily be expanded to save and restore the other file types.


5.1 Overview of methods


5.1.1 Java


Java and XML have a very close relationship since both are platform independent and therefore excellent for the Internet. Many tools and API's used for parsing and editing XML are written in Java and therefore Java is the natural choice for writing the XML-Database filter.
Apart from both being platform independent, Java and XML also have another very important feature in common. They are both object-oriented.
For most of the development of the filter C++ or any object-oriented language could have been used instead of Java but since the SAX API written in Java is going to be used for the parsing of the XML documents Java worked best.
25


5.1.2 Parsing API


There are many API's for parsing or "transforming" XML documents and they can be divided into two big groups, tree-based or event-based.
Some of the application areas for XML parsing are
Content validation - the structure is already validated through the use of DTDs but the content might still need to be validated so the data types are correct, names are not longer than 15 characters etc.
Information extraction - used for development of browsers or other similar tools.
Translation from non XML to XML documents
Apart from these major areas there are several other areas where XML parsing is necessary.


5.1.2.1 Tree-based API


The tree-based approaches consist in converting the XML document to a tree-structure and manipulate the tree instead of the actual XML document. This approach is very popular and lends itself very well to XML since XML is very hierarchical.
The advantage of this approach is that you have all the possible information at all times and you can manipulate the tree-structure and rewrite the XML file with the new information. You can also search very easily through the material if you have everything in the tree-structure.
The big disadvantage with this approach is that the tree-structure can become very big and you have to wait for the tree-structure to build before you have any of the information.


5.1.2.2 Event-based API


An event-based API generates an event when the document starts, when a start tag or end time is found, or when other important events occur.
Most of the API's available today are event-driven because most XML applications are very simple and the event-driven approach lends itself best to simple problems.
The big advantage of this approach is that at any point in time you only need to use very little memory since you only know what is happening at this very moment in the file.
The big disadvantage is that if you need to have information about the ascendant or descendants of the element you are working on you still need to keep large and complex structures. Thus you would be better off with a tree-based API.


5.1.2.3 Conclusion


For the storage of XML files into databases you need to keep some information but not much. Both of the approaches are actually equally well fitted to the problem and therefore the choice is more about how well the API is developed and documented. The SAX API from Microstar is a free API that is well documented and is used by many XML developers and based on these facts it will also be used for the development of the XML-DB filter.


5.1.3 JDBC - ODBC


Traditionally developing applications for different types of databases has been nearly impossible. Every database product had it's own language when communicating with the application. One of the big advantages with Java was that it was supposed to be a "write once, compile once, and run anywhere" and data base communication did not comply with this.
Working with leaders in the database field, JavaSoft developed a single API for database access - JDBC (Java DataBase Connectivity). JDBC was based upon ODBC (Open DataBase Connectivity) which is a C API created to get a standard for communication with databases in Windows.
JDBC acts as a layer above the different database drivers to provide the users with a common database interface, and the databases are set up in the control panel in windows as a JDBC:ODBC database associated with an appropriate driver. This way, if the user chooses to change database provider, the new database is set up in the control panel and associated with a new driver.


5.2 Overview of the development process


The development of the XML to database converter and vice versa is very simple and the program serves as a prototype for how conversion between XML files and databases can be done for any database and any XML file.


5.2.1 Specification


The XML to database converter should be able to take a question file along with a database name, and save the contents of the question file into the database.
The database to XML converter should be able to take a database containing question data along with a filename and possibly a category name and save all the questions in the database to the file, or the questions pertaining to a particular category if specified.


5.2.2 Design


The external design of the converter is very simple. The converter is implemented as a console application with a few different parameters.


5.2.2.1 External Design


SaveQuestions filename database

Filename refers to the URL of the file containing the questions coded in the SATML question format. The entire file will be saved in the specified database. The application will generate an error message if the file format is not correct or does not exist, stating why the file format is not correct, and giving the line number where the error occurred if applicable.
Database refers to the name of a JDBC:ODBC connection for the database where the question information is to be stored. The application will generate an error message if the database connection does not exist or if the database is not of the correct format.
If any of the above parameters are not given the application will display application help describing how to call the application.

Questions filename database [category]
Filename is the path of the file to which the questions in the database should be saved. If the path does not exist, an error message is generated.
Database refers to the name of a JDBC:ODBC connection for the database where the questions that the user wants to restore are saved. The application will generate an error message if the database connection does not exist or if the database is not of the correct format.
Category is an optional parameter, limiting the number of questions to be retrieved. If a category is provided, the application only retrieves questions of this particular category.
If any of the parameters filename or database are not given, the application will display application help.


5.2.2.2 Internal Design


SaveQuestions

SaveQuestions uses SAX to parse the SATML files and a tree structure with element nodes to save the information internally.
The SaveQuestions application is built of 3 different user defined classes; the SaveQuestions class, the MyHandler class and the Element class.
SaveQuestions invokes an instance of the lfred parser by Microstar. The parser parses the file given by the user, and sends event to the document handler (myHandler).
MyHandler collects information when the events come and populates a tree of element objects.
Finally the SaveQuestions application traverses the tree and saves the information in the database using JDBC:ODBC.
Every element in the element tree has a list of sub elements, a list of attributes, data and a reference to its parent. Using this data the element tree can be traversed forward and backward to extract the necessary information for storing in the database.

Questions

Questions is a very simple program that uses JDBC:ODBC to extract the information from the database and after extracting the information, the information is encapsulated in tags defined by the SATML markup language.


5.2.3 Conclusion


In SaveQuestions, a event-based API is used to extract the data from the XML file and the application stores the data internally in a tree. This is not a recommended approach since the profit made by using a event-based API is totally lost. However, in this particular case there is reason to believe that since the SATML language relies on dividing all the data into small portions in different files the tree will not have to store much data at any time during the conversion process. Since the SAX API has a very good documentation and is very easy to use, using the SAX API will minimize the introduction of bugs into the application.
26


CHAPTER6 method of evaluation


A set of test cases have been developed to verify that the SATML file format can accurately model a course delivered via the Internet and that the SATML-database converter works as specified in section of this document.
        The test cases all contain the following information; test case number to reference the test case in the test report, test description, reason to perform the test, and predicted results.
        For each test case there is a corresponding test report containing the following information; test case number, obtained results, and optionally comments to the results.


6.1 Test cases


Test case number:       1
Description:    Develop SATML files for the class EEL5937 - Internet Software Development given by Dr. Eaglin at UCF SUM 98
Test reason:    To verify that the SATML file format can accurately model a course delivered via the Internet.
27

Predicted results:      The course EEL5937 can accurately be modeled using SATML.

Test case number:       2
Description:    Create a SATML question file. File 1 shall contain one question of each type with the category set to HTML. File 2 shall contain six questions (two mc, two match, one c and one sa) of different categories.
Test reason:    To verify that SATML can store multiple-choice, mathing, short answer and calculated questions as specified.
Predicted results:      SATML can model all of the above question types.

Test case number:       3
Description:    Save the question files created in test case 2 into a SATML database using SaveQuestions.
Test reason:    To verify that SaveQuestions can save the question types that can be modeled by the SATML language.
Predicted results:      The questions will be saved in the question table of the SATML database.

Test case number:       4
Description:    Restore all the questions saved in test case 3 from the database using Questions with no category information.
Test reason:    To verify that the Questions application can retrieve question information from a SATML database and that all the questions stored in the database will be retrieved if no category information is provided.
Predicted results:      All the questions stored in the database will be retrieved and written to the SATML file provided by the user.

Test case number:       5
Description:    Restore all the questions saved in test 3 with the category HTML.               
Test reason:    To verify that the Questions application restores only the question with the category set to HTML.
Predicted results:      The Questions application restores the questions from the HTML category.

Test case number:       6
Description:    Call the application SaveQuestions with only one parameter.
Test reason:    To verify that SaveQuestions doesn't generate errors, when to few parameters are given.
Predicted results:      Help for the SaveQuestions application should be shown.

Test case number:       7
Description:    Call the application Questions with only one parameter.
Test reason:    To verify that Questions doesn't generate errors, when to few parameters are given.
Predicted results:      Help for the Questions application should be shown.

Test case number:       8
Description:    Call SaveQuestions with an erroneous question file.
Test reason:    To verify that SaveQuestions can handle erroneous input.
Predicted results:      A message will appear stating why the file is erroneous.

Test case number:       9
Description:    Call SaveQuestions with the path to a question file that doesn't exist.
Test reason:    To verify that SaveQuestions can handle erroneous input.
Predicted results:      A message will appear stating that the file does not exist.

Test case number:       10
Description:    Call SaveQuestions with an erroneous database.
Test reason:    To verify that SaveQuestions can handle erroneous input.
Predicted results:      A message will appear stating that the database is erroneous.

Test case number:       11
Description:    Call SaveQuestions with a database that does not exist.
Test reason:    To verify that SaveQuestions can handle erroneous input.
Predicted results:      A message will appear stating that the database does not exist.

Test case number:       12
Description:    Call Questions with an erroneous file path.
Test reason:    To verify that Questions can handle erroneous input.
Predicted results:      A message will appear stating that the file path is not valid.

Test case number:       13
Description:    Call Questions with an erroneous database.
Test reason:    To verify that Questions can handle erroneous input.
Predicted results:      A message will appear stating that the database is erroneous.

Test case number:       14
Description:    Call Questions with a database that does not exist.
Test reason:    To verify that Questions can handle erroneous input.
Predicted results:      A message will appear stating that the database does not exist.

Test case number:       15
Description:    Call Questions with a category that is not in the database.
Test reason:    To verify that this scenario does not generate an error.
Predicted results:      The Questions application shall generate a question file without questions.


6.2 Evaluation criteria


All the obtained results must correspond to the predicted results or have a plausible explanation for the tests to be valid. A diagram of the SATML database used for the tests can be found in appendix D.


6.3 Test results


Test case number:       1
Obtained results:       The course EEL5937 was successfully modeled using the SATML language. The resulting files of this test case can be found in appendix C.

Test case number:       2
Obtained results:       The files were successfully created and all the specified question types could be modeled.

Test case number:       3
Obtained results:       All the questions were successfully saved in the SATML database.

Test case number:       4
Obtained results:       All the questions stored in the database were successfully retrieved and written to the specified file.

Test case number:       5
Obtained results:       Only the questions from the HTML category were retrieved.

Test case number:       6
Obtained results:       The help for the SaveQuestions application was shown.

Test case number:       7
Obtained results:       The help for the Questions application was shown.

Test case number:       8
Obtained results:       An HTML file was sent to the application instead of a question file and the application returned an error message stating that this was not a question file.

Test case number:       9
Obtained results:       The application returned an error message stating that the file did not exist.

Test case number:       10
Obtained results:       The application returned an error message stating that the database was of the wrong format.

Test case number:       11
Obtained results:       The application returned an error message stating that the database did not exist.

Test case number:       12
Obtained results:       The application returned an error message stating that the file path was wrong.

Test case number:       13
Obtained results:       The application returned an error message stating that the database was of the wrong format.

Test case number:       14
Obtained results:       The application returned an error message stating that the database did not exist.

Test case number:       14
Obtained results:       The application generated a file without questions.


6.4 Conclusions


All the test cases were successful which verifies that the SATML file format and the applications developed for it worked as specified. However, the developer of the SATML file format, and the applications, developed all the test cases, thus there is still the possibility of untested cases to produce errors.
28


CHAPTER7 Summary


A software team, developing a distance learning tool is generally most concerned about the user interface for the tool and features of the tool because these are what sell the tool to the customer. This new data centric approach to distance learning enable the users of distance learning tools to take their material one step further. This approach enables them to reuse their material, and more importantly to share their and other instructors' material in a way that can improve the quality of courses delivered via the Internet.
The Internet was developed to let people share information and the research done for this thesis was based on this idea.
        The structure of SATML is very modular to make it easy to extract and share small portions of the course information and at the same time enable the modeling of an entire course.
Further improvements to the SATML language can be made by providing more question types such as hot-image questions and long answer questions, but only the most common question types were chosen for SATML to keep the language simple.
29

        XML is currently a very insecure transfer format, because the information is delivered via the Internet in plain readable ASCII. Research is done in the area of encrypting certain elements in an XML file, in a similar way to how HTML pages can be protected. For full use of the SATML file format the files need to contain this type of security to prevent possible cheating on quizzes.

30

APPENDIXA SATML DTD FILES
31

COURSE META DATA DTD

<?xml encoding="US-ASCII"?>

<!ELEMENT COURSEMETADATA (TITLE, SUBJECT, LEVEL, DESCRIPTION, KEYWORD*,
                LANGUAGE, IDENTIFIER, PUBLISHER, AGENT, LOCATION, PRESENTATION?,
               FORMAT?, CONTAINERTYPE?, PUBLICATIONDATE,
               PLATFORM?, USERSUPPORT?, USETIME?, VERSION, INTERACTIVITYLEVEL,
               LASTMODIFIEDDATE, ROLE, OBJECTIVITIES, CREATOR*, CONTRIBUTOR?,
               SOURCE, USERIGHTS, EXPIRATIONDATE, DATES, GRADELIMIT*)>

<!ELEMENT       TITLE (#PCDATA)>
<!ELEMENT       SUBJECT (#PCDATA)>

<!ELEMENT       LEVEL EMPTY>
<!ATTLIST       LEVEL
        AGE             CDATA   #IMPLIED
        SKILL           CDATA   #IMPLIED>

<!ELEMENT       DESCRIPTION (#PCDATA)>
<!ELEMENT       KEYWORD (#PCDATA)>
<!ELEMENT       LANGUAGE (#PCDATA)>
<!ELEMENT       IDENTIFIER (#PCDATA)>
<!ELEMENT       PUBLISHER (#PCDATA)>
<!ELEMENT       AGENT (#PCDATA)>

<!ELEMENT       LOCATION EMPTY>
<!ATTLIST       LOCATION
        REF             CDATA   #REQUIRED>

<!ELEMENT       PRESENTATION (#PCDATA)>
<!ELEMENT       FORMAT (#PCDATA)>
<!ELEMENT       RESOURCETYPE (#PCDATA)>
<!ELEMENT       CONTAINERTYPE (#PCDATA)>

<!ELEMENT PUBLICATIONDATE EMPTY>
<!ATTLIST PUBLICATIONDATE
        DAY             CDATA   #REQUIRED
        MONTH   CDATA   #REQUIRED
        YEAR            CDATA   #REQUIRED>

<!ELEMENT       PLATFORM (#PCDATA)>
<!ELEMENT       USERSUPPORT (#PCDATA)>
<!ELEMENT       VERSION (#PCDATA)>
<!ELEMENT       INTERACTIVITYLEVEL (#PCDATA)>

<!ELEMENT       LASTMODIFIEDDATE EMPTY>
<!ATTLIST       LASTMODIFIEDDATE
        DAY             CDATA   #REQUIRED
        MONTH   CDATA   #REQUIRED
        YEAR            CDATA   #REQUIRED>

<!ELEMENT       ROLE            (#PCDATA)>
<!ELEMENT       OBJECTIVES      (#PCDATA)>

<!ELEMENT       CREATOR (FNAME, MINITIAL?, LNAME, EMAIL?, PHONE? HOURS*)>
<!ELEMENT       FNAME (#PCDATA)>
<!ELEMENT       MINITIAL (#PCDATA)>
<!ELEMENT       LNAME (#PCDATA)>
<!ELEMENT       EMAIL (#PCDATA)>

<!ELEMENT       PHONE EMPTY>
<!ATTLIST       PHONE
        AREACODE                CDATA   #REQUIRED
        PHONENUMBER     CDATA   #REQUIRED>

<!ELEMENT       HOURS           EMPTY>
<!ATTLIST       HOURS
        DAY             CDATA           #REQUIRED
        FROM            CDATA           #REQUIRED
        TO              CDATA           #REQUIRED>

<!ELEMENT       CONTRIBUTOR     (#PCDATA)>
<!ELEMENT       SOURCE          (#PCDATA)>

<!ELEMENT       USERIGHTS               EMPTY>
<!ATTLIST       USERIGHTS
        PERMISSION (restricted|use|aggregatable|disaggregatable|distributable|editable)
                                "restricted">

<!ELEMENT       EXPIRATIONDATE  EMPTY>
<!ATTLIST       EXPIRATIONDATE
        DAY             CDATA   #REQUIRED
        MONTH   CDATA           #REQUIRED
        YEAR            CDATA   #REQUIRED>

<!ELEMENT       DATES                   EMPTY>
<!ATTLIST       DATES
        REF             CDATA   #REQUIRED>

<!ELEMENT       GRADELIMIT              EMPTY>
<!ATTLIST       GRADELIMIT
        PERCENTAGE      CDATA           #REQUIRED
        GRADE           CDATA   #REQUIRED>


32

SCHEDULE DTD

<?xml encoding="US-ASCII"?>

<!ELEMENT SCHEDULE (COURSE, ASSIGNMENT*, MATERIAL*, LECTURE*, DEADLINE*)>

<!ELEMENT COURSE (#PCDATA)>
<!ELEMENT ASSIGNMENT (TITLE, CONTENT, GIVEN-DATE, DUE-DATE, WEIGHT)>
<!ELEMENT MATERIAL (TITLE, CONTENT, AUTHOR+)>
<!ELEMENT LECTURE (TITLE, LOCATION, DATE, TIME, DURATION, GUEST-LECTURER?)>
<!ELEMENT DEADLINE (TITLE, DATE)>

<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT CONTENT EMPTY>
<!ELEMENT GIVEN-DATE EMPTY>
<!ELEMENT DUE-DATE EMPTY>
<!ELEMENT WEIGHT (#PCDATA)>

<!ELEMENT AUTHOR (#PCDATA)>

<!ELEMENT LOCATION (#PCDATA)>
<!ELEMENT DATE EMPTY>
<!ELEMENT TIME EMPTY>
<!ELEMENT DURATION EMPTY>
<!ELEMENT GUEST-LECTURER (#PCDATA)>

<!ATTLIST COURSE
        REF CDATA #REQUIRED>

<!ATTLIST CONTENT
        REF CDATA #IMPLIED
        ISBN CDATA #IMPLIED>

<!ATTLIST GIVEN-DATE
        DAY CDATA #REQUIRED
        MONTH CDATA #REQUIRED
        YEAR CDATA #REQUIRED>

<!ATTLIST DUE-DATE
        DAY CDATA #REQUIRED
        MONTH CDATA #REQUIRED
        YEAR CDATA #REQUIRED>

<!ATTLIST DATE
        DAY CDATA #REQUIRED
        MONTH CDATA #REQUIRED
        YEAR CDATA #REQUIRED>

<!ATTLIST TIME
        HOUR CDATA #REQUIRED
        MIN CDATA #REQUIRED
        AM-PM (AM|PM) "AM">


33

ASSIGNMENT DTD

<?xml encoding="US-ASCII"?>

<!ELEMENT ASSIGNMENT (TYPE, TIME-DEDUCTION, TIME-LIMIT, AUTHOR, CONSTRAINTS,
                        ATTEMPTS, ATTEMPT-DEDUCTION, SCORING, TASK+)>

<!ELEMENT TYPE (#PCDATA)>
<!ELEMENT TIME-DEDUCTION EMPTY>
<!ELEMENT TIME-LIMIT EMPTY>
<!ELEMENT AUTHOR (FNAME, MINITIAL, LNAME)>
<!ELEMENT FNAME (#PCDATA)>
<!ELEMENT MINITIAL (#PCDATA)>
<!ELEMENT LNAME (#PCDATA)>
<!ELEMENT CONSTRAINTS (#PCDATA)>
<!ELEMENT ATTEMPTS (#PCDATA)>
<!ELEMENT ATTEMPT-DEDUCTION (#PCDATA)>
<!ELEMENT SCORING (#PCDATA)>
<!ELEMENT TASK (PERCENTAGE, CONTENT, GRADING, HINT*, ACTION*)>
<!ELEMENT PERCENTAGE (#PCDATA)>
<!ELEMENT CONTENT (#PCDATA)>
<!ELEMENT GRADING (#PCDATA)>
<!ELEMENT HINT (#PCDATA)>
<!ELEMENT ACTION EMPTY>

<!ATTLIST TIME-DEDUCTION
        PERIOD CDATA #IMPLIED
        UNIT (min|hour|day|week|late) "late"
        PERCENT CDATA #IMPLIED>

<!ATTLIST TIME-LIMIT
        VALUE CDATA #IMPLIED
        UNIT (min|hour|day|week) "day">

<!ATTLIST CONTENT
        REF CDATA #IMPLIED>

<!ATTLIST HINT
        DEDUCTION CDATA #IMPLIED>

<!ACTION
        WHEN (correct|incorrect) "correct"
        TYPE (task|comment) "task"
        CONTENT CDATA #REQUIRED>


34

QUESTION DTD

<?xml encoding="US-ASCII"?>

<!ELEMENT QUESTIONS (MCQUESTION*, SAQUESTION*, CQUESTION*, MATCHQUESTION*)*>

<!-- Multiple choice question -->
<!ELEMENT MCQUESTION (ID, TITLE, PDATE, CATEGORY, LEVEL?,
                         STATEMENT, MCANSWER+)>

<!-- Short Answer question -->
<!ELEMENT SAQUESTION (ID, TITLE, PDATE, CATEGORY, LEVEL?,
                         STATEMENT, SAANSWER+)>

<!-- Calculated question -->
<!ELEMENT CQUESTION (ID, TITLE, PDATE, CATEGORY, LEVEL?,
                        STATEMENT, FORMULA, VARIABLE+,
                        CANSWER, UNIT?)>

<!-- Match question -->
<!ELEMENT MATCHQUESTION (ID, TITLE, PDATE, CATEGORY, LEVEL?,
                        STATEMENT, MATCHELEMENT+)>

<!-- Common parts -->
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT PDATE EMPTY>
<!ELEMENT CATEGORY (#PCDATA)>
<!ELEMENT LEVEL EMPTY>
<!ELEMENT STATEMENT (#PCDATA)>
<!ELEMENT VERSION (#PCDATA)>
<!ELEMENT ID (#PCDATA)>

<!-- Specific parts -->
<!ELEMENT MCANSWER (ANSWERTEXT, FEEDBACK?)>
<!ELEMENT SAANSWER (ANSWERTEXT, FEEDBACK?)>
<!ELEMENT FORMULA (#PCDATA)>
<!ELEMENT VARIABLE EMPTY>
<!ELEMENT CANSWER EMPTY>
<!ELEMENT UNIT EMPTY>
<!ELEMENT MATCHELEMENT (LEFTCOLUMNMATCH, RIGHTCOLUMNMATCH)>
<!ELEMENT LEFTCOLUMNMATCH (#PCDATA)>
<!ELEMENT RIGHTCOLUMNMATCH (#PCDATA)>

<!-- Attributes -->
<!ATTLIST MCQUESTION
        MULTIPLE_SELECTION (yes | no) "no"
        ANSWER_LAYOUT (horizontal | vertical) "vertical">

<!ATTLIST SAQUESTION
        NUMBER_OF_ANSWER_BOXES CDATA #IMPLIED>

<!ATTLIST MATCHQUESTION
        LEFT_COLUMN_TYPE (short | long) "long"
        RIGHT_COLUMN_TYPE (short | long) "long"
        MARKING_SCHEME (eq_weighted | all_nothing | right_less_wrong) "eq_weighted"
        COLUMN_PREVIEW (yes | no) "yes">

<!ATTLIST PDATE
        DAY CDATA #REQUIRED
        MONTH CDATA #REQUIRED
        YEAR CDATA #REQUIRED>

<!ATTLIST LEVEL
        AGE CDATA #REQUIRED
        SKILL CDATA #REQUIRED>

<!ATTLIST MCANSWER
        CORRECTNESS CDATA #IMPLIED>

<!ATTLIST SAANSWER
        CORRECTNESS CDATA #IMPLIED
        ALLOW_TO_ANSWER_IN_BOX CDATA #REQUIRED>

<!ATTLIST VARIABLE
        NAME CDATA #REQUIRED
        MIN CDATA #REQUIRED
        MAX CDATA #REQUIRED
        DEC CDATA #REQUIRED>

<!ATTLIST CANSWER
        ANSWER-FORMAT (decimals|significant-figures) "decimals"
        ANSWER-FORMAT-VALUE CDATA #IMPLIED
        TOLERANCE CDATA #IMPLIED
        TOLERANCE_TYPE (percent | units) "percent">

<!ATTLIST UNIT
        IMPORTANCE CDATA #REQUIRED
        NAME CDATA #REQUIRED
        REQ (yes | no) "no"
        UNIT_SPACE (yes | no) "no"
        UNIT_CASE (yes | no) "no">


35

ASSESSMENT DTD

<?xml encoding="US-ASCII"?>

<!ELEMENT ASSESSMENT (FNAME, MINITIAL?, LNAME, SSN?, COURSE,
ASSIGNMENT*)>

<!ELEMENT ASSIGNMENT (TASK, PERFORMANCE)>
<!ELEMENT TASK (#PCDATA)>
<!ATTLIST TASK
REF     CDATA   #IMPLIED>
<!ELEMENT PERFORMANCE (#PCDATA)>

<!ELEMENT TOTALGRADE (PERFORMANCECODING, GRADE, PUBLICATIONDATE,
EXPIRATIONDATE?)>
<!ELEMENT PERFORMANCECODING (#PCDATA)>
<!ELEMENT GRADE (#PCDATA)>
<!ELEMENT PUBLICATIONDATE EMPTY>
<!ATTLIST PUBLICATIONDATE
DAY     CDATA   #REQUIRED
MONTH   CDATA   #REQUIRED
YEAR    CDATA   #REQUIRED>

<!ELEMENT EXPIRATIONDATE EMPTY>
<!ATTLIST EXPIRATIONDATE
DAY     CDATA   #REQUIRED
MONTH   CDATA   #REQUIRED
YEAR    CDATA   #REQUIRED>


36

APPENDIXB CODE FOR SATML-DATABASE CONVERTERS
37

SAVEQUESTIONS.JAVA

import org.xml.sax.*;
import org.xml.sax.helpers.*;
import java.util.*;
import java.sql.*;

public class SaveQuestions{
  static final String parserClass = "com.microstar.xml.SAXDriver";

  public static void main(String args[]){

    //variables
    Vector questionVector, statementVector, tempVector;
    QuestionStatement q = new QuestionStatement(0);
    Connection con = null;
    Element tempElement, questionElement;
    int i;
    boolean b;
    String name;

    //check arguments
    if (args.length < 2)
      System.out.println("Syntax: SaveQuestions fileURL DBAlias");

    //parse xml file
    try{
      Parser parser = ParserFactory.makeParser(parserClass);
      MyHandler handler = new MyHandler();
      parser.setDocumentHandler(handler);
      parser.parse(args[0]);

      //get the root vector and traverse it's children to get a vector with questions
      tempElement = handler.getRoot();
      //get it's children to se if it is a QUESTION file
      tempVector = tempElement.getChildren();
      tempElement = (Element)tempVector.elementAt(0);
      name = tempElement.getName();

      if (name.compareTo("QUESTIONS") != 0){
        System.out.println("Error: " + args[0] + " is not a question file");
        System.out.println("the root element is " + name);
        return;
      }

      //walk through the tree and get information
      questionVector = tempElement.getChildren();


      //set up the database
      try{
        //set up the driver and the database to use
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String url = "jdbc:odbc:" + args[1];
        con = DriverManager.getConnection(url, "", "");

        //Get the next available Question ID
        Statement select = con.createStatement();
        ResultSet result = select.executeQuery("SELECT max(Question_ID) FROM Questions AS max_id");

        int id = 0;
        while(result.next())
          id = result.getInt(1);

        //close this statement
        select.close();

        //Get the next available Answer ID
        Statement ansIDSelect = con.createStatement();
        ResultSet ansIDResult = ansIDSelect.executeQuery("SELECT max(Answer_ID) FROM Answers AS max_id");

        ReturnInt answer_id = new ReturnInt(0);
        while(ansIDResult.next())
          answer_id.setVal(ansIDResult.getInt(1));

        //close this statement
        ansIDSelect.close();

        statementVector = new Vector();

        //get the statements to insert in the database
        for(i = 0; i < questionVector.size(); i++){
          questionElement = (Element)questionVector.elementAt(i);
          q = new QuestionStatement(1);

          b = q.createStatements(questionElement, con, ++id, answer_id);
          if (b)
            statementVector.addElement(q);
        }

        //insert the statements into the database
        b = dbInsert(statementVector, con);

      }

      catch(Exception e){
        if(con != null){
          try{ con.rollback();}
          catch(SQLException sexc){}
        }
        e.printStackTrace();
      }
      finally{
        try{
          //close the database
          con.close();
        }
        catch(SQLException e){
          e.printStackTrace();
        }
      }
    }
    catch(SAXParseException e){
      System.out.println("Error occured on line " + e.getLineNumber() + " of file " +  args[0]);
      System.out.println(e.getMessage());
    }
    catch(Exception e){
      System.out.println("Error: unable to read or parse " + args[0]);
    }
  }

  static boolean dbInsert(Vector statements, Connection con){
    QuestionStatement q;
    Vector v = new Vector();
    int i, j, insertCount, answerCount;

    for(i = 0; i < statements.size(); i++){

      try{
        Statement qInsert = con.createStatement();
        q = (QuestionStatement)statements.elementAt(i);
        insertCount = qInsert.executeUpdate(q.getQuestion());
        qInsert.close();
      }
      catch(Exception e){
        e.printStackTrace();
        return false;
      }

      v = q.getAnswerStatements();
      for (j = 0; j < v.size(); j++){
        try{
          Statement aInsert = con.createStatement();
          answerCount = aInsert.executeUpdate((String)v.elementAt(j));
          aInsert.close();
        }
        catch(Exception e){
          e.printStackTrace();
          return false;
        }
      }

      //cquestion
      if (q.getType() == 3){
        try{
          Statement fInsert = con.createStatement();
          answerCount = fInsert.executeUpdate(q.getFormula());
          fInsert.close();
        }
        catch(Exception e){
          e.printStackTrace();
          return false;
        }
      }
    }

    return true;
  }
}


38

MYHANDLER.JAVA

import org.xml.sax.HandlerBase;
import org.xml.sax.AttributeList;

public class MyHandler extends HandlerBase {

  public Element root;
  Element currentElement;

  public void startDocument(){
    currentElement = new Element("root", " ", null, null);
    root = currentElement;
  }

  public Element getRoot(){
    return root;
  }

  public void startElement (String name, AttributeList atts)
  {
    Element e = new Element(name, "", atts);
    currentElement.addChild(e);
    currentElement = e;
  }

  public void endElement (String name)
  {
    currentElement = currentElement.getParent();
  }

  public void characters (char ch[], int start, int length){
    String val = new String(ch, start, length);
    currentElement.setValue(val);
  }

  public void endDocument(){
//    root.print(0);
  }
}


39

ELEMENT.JAVA

import java.util.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;

class Element extends java.lang.Object{
  private Element parent;
  private Vector subElements;
  String name;
  String value;
  AttributeList atts;

  public Element(String n, String v, AttributeList a, Element p){
    name = n;
    value = v;
    if(a != null)
      atts = new AttributeListImpl(a);
    else
      atts = new AttributeListImpl();
    parent = p;
    subElements = new Vector();
  }

  public Element(String n, String v, AttributeList a){
    name = n;
    value = v;
    if(a != null)
      atts = new AttributeListImpl(a);
    else
      atts = new AttributeListImpl();
    parent = null;
    subElements = new Vector();
  }

  public boolean hasChildren(){
    if(subElements.size() != 0)
      return true;
    else
      return false;
  }

  public void setParent(Element p){
    parent = p;
  }

  public Element getParent(){
    return parent;
  }

  public void addChild(Element e){
    e.setParent(this);
    subElements.addElement(e);
  }

  public Vector getChildren(){
    return subElements;
  }

  public void setName(String n){
    name = n;
  }

  public String getName(){
    return name;
  }

  public void setValue(String v){
    value = v;
  }

  public String getValue(){
    return value;
  }

  public void setAttributes(AttributeList a) {
    atts = a;
  }

  public AttributeList getAttributes() {
    return atts;
  }

  public void printAtts(int n){
    int i, j;
    if(atts != null){
      for(j = 0; j < atts.getLength(); j++){
        for(i = 0; i < n; i++)
          System.out.print(" ");
        System.out.println("--- Attribute ----------");
        for(i = 0; i < n; i++)
          System.out.print(" ");
        System.out.println("Name = " + atts.getName(j));
        for(i = 0; i < n; i++)
          System.out.print(" ");
        System.out.println("Value = " + atts.getValue(j));
        for(i = 0; i < n; i++)
          System.out.print(" ");
        System.out.println("Type = " + atts.getType(j));
        for(i = 0; i < n; i++)
          System.out.print(" ");
        System.out.println("------------------------");
      }
    }
  }

  public void print(int n){
    int i, j;

    for(i = 0; i < n; i++)
      System.out.print(" ");
    System.out.println("Name = " + name);
    for(i = 0; i < n; i++)
      System.out.print(" ");
    System.out.println("Value = " + value);

    if(atts != null){
      if(atts.getLength() == 0){
        for(i = 0; i < n; i++)
          System.out.print(" ");
        System.out.println("No attributes");
      }
      else
        printAtts(n);
    }

    for(j = 0; j < subElements.size(); j++){
      Element e = (Element)subElements.elementAt(j);
      e.print(n+2);
    }
  }
}


40

QUESTIONS.JAVA

import java.net.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;

public class Questions{
  public static void main(String args[]){

    String fileName;
    String dbURL;
    int j;
    char c;

    //get the command line parameters
    //no args, print help
    if (args.length <= 1){
      help();
      return;
    }
    else{
      fileName = args[0];
      dbURL = "jdbc:odbc:" + args[1];

      if (args.length == 2)
        System.out.println("Trying to retreive all questions");
      if (args.length >= 3)
        System.out.println("Trying to retreive all questions from the category: " + args[2]);

      String months[] = {"jan", "feb", "mar", "apr",
                        "may", "jun", "jul", "aug",
                        "sep", "oct", "nov", "dec"};
      FileWriter fw;

      try{
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      }
      catch(Exception e){
        System.out.println("Failed to load mSQL driver");
        return;
      }

      try{
        fw = new FileWriter(fileName);

        Connection con = DriverManager.getConnection(dbURL, "", "");
        Statement select = con.createStatement();

        //if the user chose to provide a category, select only the questions from that category
        ResultSet result;
        if (args.length == 3)
          result = select.executeQuery("SELECT * FROM Questions WHERE category='" + args[2] + "'");
        else
          result = select.executeQuery("SELECT * FROM Questions");

        System.out.println("Getting results");

        fw.write("<QUESTIONS>", 0, 11);
        fw.write("\n");

        while(result.next()){
          String id = result.getString("Question_ID");

          //get the question type
          String type = result.getString("Type");
          String question = type.concat("QUESTION");
          fw.write(" <", 0, 2);

          //Get the questiontypes and it's corresponding question attributes
          //MCQUESTION
          if (type.compareTo("MC") == 0){
            boolean boolAtt = result.getBoolean("Multiple_Selection");
            if (boolAtt)
              question = question + " MULTIPLE_SELECTION=\"yes\"";
            else
              question = question + " MULTIPLE_SELECTION=\"no\"";
            String att = result.getString("Answer_layout");
            if (att != null)
              question = question + " ANSWER_LAYOUT=\"" + att + "\"";
          }
          //SAQUESTION
          if (type.compareTo("SA") == 0){
            int att = result.getInt("Number_of_answer_boxes");
            question = question + " NUMBER_OF_ANSWER_BOXES=\"" + att + "\"";
          }
          //MATCHQUESTION
          if (type.compareTo("MATCH") == 0){
            String att = result.getString("Left_column_type");
            if (att != null)
              question = question + " LEFT_COLUMN_TYPE=\"" + att + "\"";
            att = result.getString("Right_column_type");
            if (att != null)
              question = question + " RIGHT_COLUMN_TYPE=\"" + att + "\"";
            att = result.getString("Marking_scheme");
            if (att != null)
              question = question + " MARKING_SCHEME=\"" + att + "\"";
            boolean boolAtt = result.getBoolean("Column_preview");
            if (boolAtt)
              question = question + " COLUMN_PREVIEW=\"yes\"";
            else
              question = question + " COLUMN_PREVIEW=\"no\"";
          }

          fw.write(question, 0, question.length());
          fw.write(">");
          fw.write("\n");

          //get the title
          String s = result.getString("Title");
          fw.write("  <TITLE>", 0, 9);
          fw.write(s, 0, s.length());
          fw.write("</TITLE>", 0, 8);
          fw.write("\n");

          //get the date
          java.sql.Date d = result.getDate("Pdate");
          int day = d.getDay()+1;
          String month = months[d.getMonth()];
          int year = d.getYear();
          s = "  <PUBLICATION_DATE DAY=\"" + day + "\" MONTH=\"" + month + "\" YEAR=\"" + year + "\" />";
          fw.write(s, 0, s.length());
          fw.write("\n");

          //get the category
          s = result.getString("Category");
          fw.write("  <CATEGORY>", 0, 12);
          fw.write(s, 0, s.length());
          fw.write("</CATEGORY>", 0, 11);
          fw.write("\n");

          //get learning age and learning level
          int age = result.getInt("Age");
          int level = result.getInt("Level");
          s = "  <LEVEL AGE=\"" + age + "\" SKILL=\"" + level + "\" />";
          fw.write(s, 0, s.length());
          fw.write("\n");

          //get the question statement
          s = result.getString("Statement");
          fw.write("  <STATEMENT>", 0, 13);
          fw.write("\n");
          s = "   " + s;
          fw.write(s, 0, s.length());
          fw.write("\n");
          fw.write("  </STATEMENT>", 0, 14);
          fw.write("\n");

          Connection conAnswers = DriverManager.getConnection(dbURL, "", "");
          Statement selectAnswers = conAnswers.createStatement();
          ResultSet resultAnswers = selectAnswers.executeQuery("SELECT * from Answers where Question_ID=" + id);

          //get the answer depending on the question type
          //MCQUESTION
          while(resultAnswers.next()){
            if (type.compareTo("MC") == 0){
              fw.write("  <MCANSWER", 0, 11);
              int correct = resultAnswers.getInt("Correctness");
              s = " CORRECTNESS=\"" + correct + "\">";
              fw.write(s, 0, s.length());
              fw.write("\n");
              fw.write("      <ANSWERTEXT>", 0, 15);
              fw.write("\n");
              s = resultAnswers.getString("Answer_text");
              fw.write("    " + s, 0, s.length() + 4);
              fw.write("\n");
              fw.write("   </ANSWERTEXT>", 0, 16);
              s = resultAnswers.getString("Feedback");
              if (s != null){
                fw.write("\n");
                fw.write("   <FEEDBACK>", 0, 13);
                fw.write("\n");
                fw.write("    " + s, 0, s.length() + 4);
                fw.write("\n");
                fw.write("   </FEEDBACK>", 0, 14);
              }
              fw.write("\n");
              fw.write("  </MCANSWER>", 0, 13);
              fw.write("\n");
            }

            //SAQUESTION
            if (type.compareTo("SA") == 0){
              fw.write("  <SAANSWER", 0, 11);
              int correct = resultAnswers.getInt("Correctness");
              s = " CORRECTNESS=\"" + correct + "\"";
              fw.write(s, 0, s.length());
              s = resultAnswers.getString("Allow_to_answer_in_box");
              if (s != null)
                s = " ALLOW_TO_ANSWER_IN_BOX=\"" + s + "\">";
              else
                s = ">";
              fw.write(s, 0, s.length());
              fw.write("\n");
              fw.write("   <ANSWERTEXT>", 0, 15);
              fw.write("\n");
              s = resultAnswers.getString("Answer_text");
              fw.write("    " + s, 0, s.length() + 4);
              fw.write("\n");
              fw.write("   </ANSWERTEXT>", 0, 16);
              s = resultAnswers.getString("Feedback");
              if (s != null){
                fw.write("\n");
                fw.write("   <FEEDBACK>", 0, 13);
                fw.write("\n");
                fw.write("    " + s, 0, s.length() + 4);
                fw.write("\n");
                fw.write("   </FEEDBACK>", 0, 14);
              }
              fw.write("\n");
              fw.write("  </SAANSWER>", 0, 13);
              fw.write("\n");
            }

            //MATCHQUESTION
            if (type.compareTo("MATCH") == 0){
              fw.write("  <MATCHELEMENT>", 0, 16);
              fw.write("\n");
              fw.write("   <LEFTCOLUMNMATCH>", 0, 20);
              fw.write("\n");
              s = resultAnswers.getString("Left_column_content");
              s = "    " + s;
              fw.write(s, 0, s.length());
              fw.write("\n");
              fw.write("   </LEFTCOLUMNMATCH>", 0, 21);
              fw.write("\n");
              fw.write("   <RIGHTCOLUMNMATCH>", 0, 21);
              fw.write("\n");
              s = resultAnswers.getString("Right_column_content");
              s = "    " + s;
              fw.write(s, 0, s.length());
              fw.write("\n");
              fw.write("   </RIGHTCOLUMNMATCH>", 0, 22);
              fw.write("\n");
              fw.write("  </MATCHELEMENT>", 0, 17);
              fw.write("\n");
            }

            //CQUESTION
            if (type.compareTo("C") == 0){
              s = result.getString("Formula");
              if (s != null){
                fw.write("  <FORMULA>", 0, 11);
                fw.write("\n");
                s = "   " + s;
                fw.write(s, 0, s.length());
                fw.write("\n");
                fw.write("  </FORMULA>", 0, 12);
                fw.write("\n");
              }

              Connection conVars = DriverManager.getConnection(dbURL, "", "");
              Statement selectVars = conVars.createStatement();
              ResultSet resultVars = selectVars.executeQuery("SELECT * from Formula_info where Question_ID=" + id);

              while (resultVars.next()){
                String varString = "<VARIABLE ";
                s =  resultVars.getString("Var_name");
                if (s != null)
                  varString = "NAME=\"" + s + "\"";
                int i =  resultVars.getInt("Max_var_value");
                varString = "MAX=\"" + i + "\"";
                i =  resultVars.getInt("Min_var_value");
                varString = "MIN=\"" + i + "\"";
                s =  resultVars.getString("Var_dec");
                if (s != null)
                  varString = "DEC=\"" + s + "\" />\n";
                fw.write(s, 0, s.length());
              }

              fw.write("  <CANSWER", 0, 10);
              s = resultAnswers.getString("Answer_format");
              s = " ANSWER_FORMAT=\"" + s + "\"";
              fw.write(s, 0, s.length());
              int i  = resultAnswers.getInt("Answer_format_value");
              s = " ANSWER_FORMAT_VALUE=\"" + i + "\"";
              fw.write(s, 0, s.length());
              i  = resultAnswers.getInt("Tolerance");
              s = " TOLERANCE=\"" + i + "\"";
              fw.write(s, 0, s.length());
              s = resultAnswers.getString("Tolerance_type");
              s = " TOLERANCE_TYPE=\"" + s + "\"/>";
              fw.write(s, 0, s.length());
              fw.write("\n");

              fw.write("  <UNIT", 0, 7);
              i = result.getInt("Unit_importance");
              s = " IMPORTANCE=\"" + i + "\"";
              fw.write(s, 0, s.length());
              s  = resultAnswers.getString("Unit_name");
              s = " NAME=\"" + s + "\"";
              fw.write(s, 0, s.length());
              boolean boolAtt = result.getBoolean("Unit_req");
              if (boolAtt)
                s = " REQ=\"yes\"";
              else
                s = " REQ=\"no\"";
              boolAtt = result.getBoolean("Unit_space");
              if (boolAtt)
                s = s + " UNIT_SPACE=\"yes\"";
              else
                s = s + " UNIT_SPACE=\"no\"";
              boolAtt = result.getBoolean("Unit_case");
              if (boolAtt)
                s = s + " UNIT_CASE=\"yes\"";
              else
                s = s + " UNIT_CASE=\"no\"";
              s = s + "/>";
              fw.write(s, 0, s.length());
              fw.write("\n");
            }
          }

          //closing statement for the type
          fw.write(" </", 0, 3);
          fw.write(type + "QUESTION", 0, type.length() + 8);
          fw.write(">");
          fw.write("\n");

        }
        fw.write("</QUESTIONS>", 0, 12);
        fw.write("\n");
        fw.close();
        select.close();
        con.close();
      }
      catch(SQLException e1){
        System.out.println("Unable to retreive data");
        System.out.println("The database you provided does not exist or is of the wrong format");
      }
      catch(IOException e2){
        System.out.println("Unable to write to the file");
        System.out.println("The filepath you provided does not exist");
      }
      catch(Exception e3){
        System.out.println("Unable to retreive data");
        System.out.println("Unknown error");
      }
    }
  }

  static void help(){
    System.out.println();
    System.out.println("Questions Converts the questions in the db to XML");
    System.out.println("--------------------------------------------");
    System.out.println("Syntax: Questions filepath dbpath [category]");
    System.out.println("--------------------------------------------");
  }
}


41

APPENDIXC SATML FILES DESCRIBING COURSE EEL5937

42

COURSE META DATA FILE

<COURSEMETADATA>
<TITLE>Internet Software Development</TITLE>
<SUBJECT>Software Engineering</SUBJECT>
<LEVEL AGE="18" SKILL="4"/>
<DESCRIPTION>
  This course will provide the student with an introduction to XML,  
  HTML and Java</DESCRIPTION>
<KEYWORD>Java</KEYWORD>
<KEYWORD>XML</KEYWORD>
<KEYWORD>HTML</KEYWORD>
<KEYWORD>Internet</KEYWORD>
<LANGUAGE>en-US</LANGUAGE>
<IDENTIFIER>EEL5937</IDENTIFIER>
<PUBLISHER>Department of Computer Engineering - UCF</PUBLISHER>
<AGENT>Ron Eaglin</AGENT>
<LOCATION REF="http://engr.ucf.edu/eel5937.html"/>
<PRESENTATION>Text, Chat, projects</PRESENTATION>
<FORMAT>HTML, Word, PowerPoint, PDF, GIF, AVI</FORMAT>
<CONTAINERTYPE>Module</CONTAINERTYPE>
<PUBLICATIONDATE DAY="8" MONTH="Feb" YEAR="1998"/>
<PLATFORM>
  Windows-based or Mac computer and a 14.4 or faster modem. You also
  need a SLIP/PPP account with an Internet service provider</PLATFORM>
<USERSUPPORT>Yes</USERSUPPORT>
<VERSION>1.0</VERSION>
<INTERACTIVITYLEVEL>Medium</INTERACTIVITYLEVEL>
<LASTMODIFIEDDATE DAY="8" MONTH="Feb" YEAR="1998"/>
<ROLE>University-Graduate</ROLE>
<OBJECTIVES>
  The objectives of this course is to get information about new
  Internet technologies.</OBJECTIVES>
<CREATOR>
  <FNAME>Ron</FNAME>
  <LNAME>Eaglin</LNAME>
  <EMAIL>reaglin@mail.ucf.edu</EMAIL>
  <PHONE AREACODE="407" PHONENUMBER="823-5937"/>
  <HOURS DAY="Mon" FROM="10.00am" TO="12.00pm"/>
  <HOURS DAY="Wed" FROM="10.00am" TO="12.00am"/>
  <HOURS DAY="Fri" FROM="10.00am" TO="12.00am"/>
</CREATOR>
<USERIGHTS PERMISSION="Restricted"/>
<EXPIRATIONDATE DAY="8" MONTH="Jul" YEAR="1998"/>
<DATES REF="EEL5937SUM98.scd"/>
<GRADELIMIT PERCENTAGE="70" GRADE="C"/>
<GRADELIMIT PERCENTAGE="80" GRADE="B"/>
<GRADELIMIT PERCENTAGE="90" GRADE="A"/>
</COURSEMETADATA>

43

COURSE SCHEDULE

<?XML VERSION="1.0"?>
<!DOCTYPE NAME "QUESTIONS" URL "schedule.dtd">
<SCHEDULE>
<COURSE REF="http://hagar.engr.ucf.edu/eel5937.rdf">EEL5937</COURSE>
<ASSIGNMENT>
  <TITLE>HTML - Assignment 1</TITLE>
  <CONTENT REF="Assignment1.asg"/>
  <GIVEN-DATE DAY="12" MONTH="may" YEAR="1998"/>
  <DUE-DATE DAY="19" MONTH="may" YEAR="1998"/>
  <WEIGHT>1</WEIGHT>
</ASSIGNMENT>
<ASSIGNMENT>
  <TITLE>Java - Assignment 2</TITLE>
  <CONTENT REF="Assignment2.asg"/>
  <GIVEN-DATE DAY="19" MONTH="may" YEAR="1998"/>
  <DUE-DATE DAY="26" MONTH="may" YEAR="1998"/>
  <WEIGHT>1</WEIGHT>
</ASSIGNMENT>
<ASSIGNMENT>
  <TITLE>XML - Assignment 3</TITLE>
  <CONTENT REF="Assignment3.asg"/>
  <GIVEN-DATE DAY="26" MONTH="may" YEAR="1998"/>
  <DUE-DATE DAY="2" MONTH="jun" YEAR="1998"/>
  <WEIGHT>1</WEIGHT>
</ASSIGNMENT>
<ASSIGNMENT>
  <TITLE>Databases - Assignment 4</TITLE>
  <CONTENT REF="Assignment4.asg"/>
  <GIVEN-DATE DAY="2" MONTH="jun" YEAR="1998"/>
  <DUE-DATE DAY="9" MONTH="jun" YEAR="1998"/>
  <WEIGHT>1</WEIGHT>
</ASSIGNMENT>
<ASSIGNMENT>
  <TITLE>HTML - Quiz 1</TITLE>
  <CONTENT REF="Quiz1.sml"/>
  <GIVEN-DATE DAY="12" MONTH="may" YEAR="1998"/>
  <DUE-DATE DAY="19" MONTH="may" YEAR="1998"/>
  <WEIGHT>1</WEIGHT>
</ASSIGNMENT>
<ASSIGNMENT>
  <TITLE>Java - Quiz 2</TITLE>
  <CONTENT REF="Quiz2.sml"/>
  <GIVEN-DATE DAY="19" MONTH="may" YEAR="1998"/>
  <DUE-DATE DAY="26" MONTH="may" YEAR="1998"/>
  <WEIGHT>1</WEIGHT>
</ASSIGNMENT>
<ASSIGNMENT>
  <TITLE>XML - Quiz 3</TITLE>
  <CONTENT REF="Quiz3.sml"/>
  <GIVEN-DATE DAY="26" MONTH="may" YEAR="1998"/>
  <DUE-DATE DAY="2" MONTH="jun" YEAR="1998"/>
  <WEIGHT>1</WEIGHT>
</ASSIGNMENT>
<ASSIGNMENT>
  <TITLE>Databases - Quiz 4</TITLE>
  <CONTENT REF="Quiz4.sml"/>
  <GIVEN-DATE DAY="2" MONTH="jun" YEAR="1998"/>
  <DUE-DATE DAY="9" MONTH="jun" YEAR="1998"/>
  <WEIGHT>1</WEIGHT>
</ASSIGNMENT>
<ASSIGNMENT>
  <TITLE>Participation</TITLE>
  <CONTENT REF="Participation.sml"/>
  <GIVEN-DATE DAY="12" MONTH="may" YEAR="1998"/>
  <DUE-DATE DAY="30" MONTH="jul" YEAR="1998"/>
  <WEIGHT>20</WEIGHT>
</ASSIGNMENT>
<ASSIGNMENT>
  <TITLE>Project</TITLE>
  <CONTENT REF="Project.sml"/>
  <GIVEN-DATE DAY="12" MONTH="may" YEAR="1998"/>
  <DUE-DATE DAY="30" MONTH="jul" YEAR="1998"/>
  <WEIGHT>20</WEIGHT>
</ASSIGNMENT>
<ASSIGNMENT>
  <TITLE>Exam I - Part I</TITLE>
  <CONTENT REF="Ex1Part1.sml"/>
  <GIVEN-DATE DAY="16" MONTH="jun" YEAR="1998"/>
  <DUE-DATE DAY="16" MONTH="jun" YEAR="1998"/>
  <WEIGHT>5</WEIGHT>
</ASSIGNMENT>
<ASSIGNMENT>
  <TITLE>Exam I - Part II</TITLE>
  <CONTENT REF="Ex1Part2.sml"/>
  <GIVEN-DATE DAY="16" MONTH="jun" YEAR="1998"/>
  <DUE-DATE DAY="16" MONTH="jun" YEAR="1998"/>
  <WEIGHT>5</WEIGHT>
</ASSIGNMENT>
<ASSIGNMENT>
  <TITLE>Exam II</TITLE>
  <CONTENT REF="Ex2.sml"/>
  <GIVEN-DATE DAY="16" MONTH="jul" YEAR="1998"/>
  <DUE-DATE DAY="23" MONTH="jul" YEAR="1998"/>
  <WEIGHT>10</WEIGHT>
</ASSIGNMENT>
<MATERIAL>
  <TITLE>References page</TITLE>
  <CONTENT   
   REF="http://www.engr.ucf.edu/classes/eel5937/resources/index.htm"/>
  <AUTHOR>Ron Eaglin</AUTHOR>
</MATERIAL>
<MATERIAL>
  <TITLE>Core Java 1.1 - Fundamentals</TITLE>
  <CONTENT ISBN="0-13-766965-8"/>
  <AUTHOR>Cay S. Hortsmann</AUTHOR>
  <AUTHOR>Gary Cornell</AUTHOR>
</MATERIAL>
<LECTURE>
  <TITLE>Introduction to the Internet, HTML, Basic Internet   
  Concepts</TITLE>
  <LOCATION>ENGR124</LOCATION>
  <DATE DAY="12" MONTH="may" YEAR="1998"/>
  <TIME HOUR="10" MIN="00" AM-PM="am"/>
  <DURATION>120</DURATION>
</LECTURE>
<LECTURE>
  <TITLE>Introduction to Java and JavaScript Programming</TITLE>
  <LOCATION>ENGR124</LOCATION>
  <DATE DAY="19" MONTH="may" YEAR="1998"/>
  <TIME HOUR="10" MIN="00" AM-PM="am"/>
  <DURATION>120</DURATION>
</LECTURE>
<LECTURE>
  <TITLE>Introduction to XML, HTML Review</TITLE>
  <LOCATION>ENGR124</LOCATION>
  <DATE DAY="26" MONTH="may" YEAR="1998"/>
  <TIME HOUR="10" MIN="00" AM-PM="am"/>
  <DURATION>120</DURATION>
</LECTURE>
<LECTURE>
  <TITLE>Internet Client Server Database Concepts</TITLE>
  <LOCATION>ENGR124</LOCATION>
  <DATE DAY="2" MONTH="jun" YEAR="1998"/>
  <TIME HOUR="10" MIN="00" AM-PM="am"/>
  <DURATION>120</DURATION>
</LECTURE>
<LECTURE>
  <TITLE>Return to XML - Advanced XML Topice, Perl, CGI (Other
   technologies)</TITLE>
  <LOCATION>ENGR124</LOCATION>
  <DATE DAY="9" MONTH="jun" YEAR="1998"/>
  <TIME HOUR="10" MIN="00" AM-PM="am"/>
  <DURATION>120</DURATION>
</LECTURE>
<LECTURE>
  <TITLE>Creating XML Clients / XML parsing / OO Principle in
  XML</TITLE>
  <LOCATION>ENGR124</LOCATION>
  <DATE DAY="23" MONTH="jun" YEAR="1998"/>
  <TIME HOUR="10" MIN="00" AM-PM="am"/>
  <DURATION>120</DURATION>
</LECTURE>
<LECTURE>
  <TITLE>Overview of COM (Component Object Model)</TITLE>
  <LOCATION>ENGR124</LOCATION>
  <DATE DAY="29" MONTH="jun" YEAR="1998"/>
  <TIME HOUR="10" MIN="00" AM-PM="am"/>
  <DURATION>120</DURATION>
</LECTURE>
<LECTURE>
  <TITLE>Overview of CORBA (Common Object Request Broker Agent)</TITLE>
  <LOCATION>ENGR124</LOCATION>
  <DATE DAY="7" MONTH="jul" YEAR="1998"/>
  <TIME HOUR="10" MIN="00" AM-PM="am"/>
  <DURATION>120</DURATION>
</LECTURE>
<LECTURE>
  <TITLE>Overview of technologies / reveiw of design principles</TITLE>
  <LOCATION>ENGR124</LOCATION>
  <DATE DAY="14" MONTH="jul" YEAR="1998"/>
  <TIME HOUR="10" MIN="00" AM-PM="am"/>
  <DURATION>120</DURATION>
</LECTURE>
<LECTURE>
  <TITLE>Project presentations</TITLE>
  <LOCATION>ENGR124</LOCATION>
  <DATE DAY="21" MONTH="jul" YEAR="1998"/>
  <TIME HOUR="10" MIN="00" AM-PM="am"/>
  <DURATION>120</DURATION>
</LECTURE>
<LECTURE>
  <TITLE>Project presentations</TITLE>
  <LOCATION>ENGR124</LOCATION>
  <DATE DAY="30" MONTH="jul" YEAR="1998"/>
  <TIME HOUR="10" MIN="00" AM-PM="am"/>
  <DURATION>120</DURATION>
</LECTURE>
<DEADLINE>
  <TITLE>Initial Project Concepts due</TITLE>
  <DATE DAY="4" MONTH="jun" YEAR="1998"/>
</DEADLINE>
<DEADLINE>
  <TITLE>Project Status Report 1 Due</TITLE>
  <DATE DAY="25" MONTH="jun" YEAR="1998"/>
</DEADLINE>
<DEADLINE>
  <TITLE>Project Implementation Plan / Overview Due</TITLE>
  <DATE DAY="9" MONTH="jul" YEAR="1998"/>
</DEADLINE>
<DEADLINE>
  <TITLE>Final project papers due</TITLE>
  <DATE DAY="30" MONTH="jul" YEAR="1998"/>
</DEADLINE>
</SCHEDULE>


44

SAMPLE ASSIGNMENT FILE

<?xml version="1.0"?>
<!DOCTYPE QUESTIONS SYSTEM "assignment.dtd">

<ASSIGNMENT>
  <TYPE>Quiz</TYPE>
  <TIME-DEDUCTION PERIOD="10" UNIT="min" PERCENT="10" />
  <AUTHOR>
    <FNAME>Ron</FNAME>
    <LNAME>Eaglin</LNAME>
  </AUTHOR>
  <CONSTRAINTS>Open Book, Open Notes</CONSTRAINTS>
  <ATTEMPTS>3</ATTEMPTS>
  <ATTEMPT-DEDUCTION>0</ATTEMPT-DEDUCTION>
  <SCORING>Avg</SCORING>
  
  <TASK>
    <PERCENTAGE>10</PERCENTAGE>
    <CONTENT REF="HTMLQuestions.qst#question1">
      Frames
    </CONTENT>
    <GRADING>Automatic</GRADING>
  </TASK>
  
  <TASK>
    <PERCENTAGE>10</PERCENTAGE>
    <CONTENT REF="HTMLQuestions.qst#question2">
      Tables
    </CONTENT>
    <GRADING>Automatic</GRADING>
  </TASK>
  
  <TASK>
    <PERCENTAGE>10</PERCENTAGE>
    <CONTENT REF="HTMLQuestions.qst#question3">
      HTML Components
    </CONTENT>
    <GRADING>Automatic</GRADING>
  </TASK>

  <TASK>
    <PERCENTAGE>10</PERCENTAGE>
    <CONTENT REF="HTMLQuestions.qst#question4">
      Formatted text
    </CONTENT>
    <GRADING>Automatic</GRADING>
  </TASK>

  <TASK>
    <PERCENTAGE>10</PERCENTAGE>
    <CONTENT REF="HTMLQuestions.qst#question5">
      Anchor argument
    </CONTENT>
    <GRADING>Automatic</GRADING>
  </TASK>

  <TASK>
    <PERCENTAGE>10</PERCENTAGE>
    <CONTENT REF="HTMLQuestions.qst#question6">
      Frames
    </CONTENT>
    <GRADING>Automatic</GRADING>
  </TASK>

  <TASK>
    <PERCENTAGE>10</PERCENTAGE>
    <CONTENT REF="HTMLQuestions.qst#question7">
      Common tags
    </CONTENT>
    <GRADING>Automatic</GRADING>
  </TASK>

  <TASK>
    <PERCENTAGE>10</PERCENTAGE>
    <CONTENT REF="HTMLQuestions.qst#question8">
      Images
    </CONTENT>
    <GRADING>Automatic</GRADING>
  </TASK>

  <TASK>
    <PERCENTAGE>10</PERCENTAGE>
    <CONTENT REF="HTMLQuestions.qst#question9">
      First tag
    </CONTENT>
    <GRADING>Automatic</GRADING>
  </TASK>

  <TASK>
    <PERCENTAGE>10</PERCENTAGE>
    <CONTENT REF="HTMLQuestions.qst#question10">
      Headers
    </CONTENT>
    <GRADING>Automatic</GRADING>
  </TASK>

</ASSIGNMENT>


45

SAMPLE QUESTION FILE

<?XML VERSION="1.0"?>
<!DOCTYPE NAME "QUESTIONS" URL "SATML.dtd">
<QUESTIONS>
<MCQUESTION>
  <ID>Question1</ID>
  <TITLE>Question 1</TITLE>
  <PDATE DAY="9" MONTH="may" YEAR="1998"/>
  <CATEGORY>HTML</CATEGORY>
  <STATEMENT>What is the tag noframes used for:</STATEMENT>
  <MCANSWER>
   <ANSWERTEXT>Remove borders from frame</ANSWERTEXT>
  </MCANSWER>
  <MCANSWER>
   <ANSWERTEXT>Return number of frames used on the page</ANSWERTEXT>
  </MCANSWER>
  <MCANSWER>
   <ANSWERTEXT>Remove frames from the page</ANSWERTEXT>
  </MCANSWER>
  <MCANSWER CORRECTNESS="100">
   <ANSWERTEXT>Alternative html for browsers that does not support
   frames</ANSWERTEXT>
   <FEEDBACK>Correct</FEEDBACK>
  </MCANSWER>
</MCQUESTION>
<MCQUESTION>
  <ID>Question2</ID>
  <TITLE>Question 2</TITLE>
  <PDATE DAY="9" MONTH="may" YEAR="1998"/>
  <CATEGORY>HTML</CATEGORY>
  <STATEMENT>What tag is not used for tables:</STATEMENT>
  <MCANSWER>
   <ANSWERTEXT>tr</ANSWERTEXT>
  </MCANSWER>
  <MCANSWER CORRECTNESS="100">
   <ANSWERTEXT>table</ANSWERTEXT>
   <FEEDBACK>Correct!</FEEDBACK>
  </MCANSWER>
  <MCANSWER>
   <ANSWERTEXT>tb</ANSWERTEXT>
  </MCANSWER>
  <MCANSWER>
   <ANSWERTEXT>td</ANSWERTEXT>
  </MCANSWER>
</MCQUESTION>
<MCQUESTION>
  <ID>Question3</ID>
  <TITLE>Question 3</TITLE>
  <PDATE DAY="9" MONTH="may" YEAR="1998"/>
  <CATEGORY>HTML</CATEGORY>
  <STATEMENT>The two components of a HTML document are?</STATEMENT>
  <MCANSWER>
   <ANSWERTEXT>Title and Text</ANSWERTEXT>
  </MCANSWER>
  <MCANSWER>
   <ANSWERTEXT>Body and Header</ANSWERTEXT>
   <FEEDBACK>Correct!</FEEDBACK>
  </MCANSWER>
  <MCANSWER>
   <ANSWERTEXT>Meta and Paragraph</ANSWERTEXT>
  </MCANSWER>
  <MCANSWER CORRECTNESS="100">
   <ANSWERTEXT>Title and Body</ANSWERTEXT>
  </MCANSWER>
</MCQUESTION>
<MCQUESTION>
  <ID>Question4</ID>
  <TITLE>Question 4</TITLE>
  <PDATE DAY="9" MONTH="may" YEAR="1998"/>
  <CATEGORY>HTML</CATEGORY>
  <STATEMENT>What tag is used for formatted text:</STATEMENT>
  <MCANSWER>
   <ANSWERTEXT>p</ANSWERTEXT>
  </MCANSWER>
  <MCANSWER>
   <ANSWERTEXT>fr</ANSWERTEXT>
  </MCANSWER>
  <MCANSWER>
   <ANSWERTEXT>hr</ANSWERTEXT>
  </MCANSWER>
  <MCANSWER CORRECTNESS="100">
   <ANSWERTEXT>pre</ANSWERTEXT>
   <FEEDBACK>Correct!</FEEDBACK>
  </MCANSWER>
</MCQUESTION>
<SAQUESTION NUMBER-OF-ANSWER-BOXES="1">
  <ID>Question5</ID>
  <TITLE>Question 5</TITLE>
  <PDATE DAY="9" MONTH="may" YEAR="1998"/>
  <CATEGORY>HTML</CATEGORY>
  <STATEMENT>The Required argument of the anchor tag which specifies
   the URL to be connected to is:</STATEMENT>
  <SAANSWER CORRECTNESS="100" ALLOW-TO-ANSWER-IN-
   BOX="all">href</SAANSWER>
</SAQUESTION>
<MCQUESTION>
  <ID>Question6</ID>
  <TITLE>Question 6</TITLE>
  <PDATE DAY="9" MONTH="may" YEAR="1998"/>
  <CATEGORY>HTML</CATEGORY>
  <STATEMENT>What tag is used to define what frame will be used to open
   new documents:</STATEMENT>
  <MCANSWER CORRECTNESS="100">
   <ANSWERTEXT>target</ANSWERTEXT>
   <FEEDBACK>Correct</FEEDBACK>
  </MCANSWER>
  <MCANSWER>
   <ANSWERTEXT>frame</ANSWERTEXT>
  </MCANSWER>
  <MCANSWER>
   <ANSWERTEXT>frameset</ANSWERTEXT>
  </MCANSWER>
  <MCANSWER>
   <ANSWERTEXT>link</ANSWERTEXT>
  </MCANSWER>
</MCQUESTION>
<MATCHQUESTION>
  <ID>Question7</ID>
  <TITLE>Question 7</TITLE>
  <PDATE DAY="9" MONTH="may" YEAR="1998"/>
  <CATEGORY>HTML</CATEGORY>
  <STATEMENT>Match the tag with it's function:</STATEMENT>
  <MATCHELEMENT>
   <LEFTCOLUMNMATCH>Bold</LEFTCOLUMNMATCH>
   <RIGHTCOLUMNMATCH>B</RIGHTCOLUMNMATCH>
  </MATCHELEMENT>
  <MATCHELEMENT>
   <LEFTCOLUMNMATCH>Separator</LEFTCOLUMNMATCH>
   <RIGHTCOLUMNMATCH>HR</RIGHTCOLUMNMATCH>
  </MATCHELEMENT>
  <MATCHELEMENT>
   <LEFTCOLUMNMATCH>Numbered list</LEFTCOLUMNMATCH>
   <RIGHTCOLUMNMATCH>OL</RIGHTCOLUMNMATCH>
  </MATCHELEMENT>
  <MATCHELEMENT>
   <LEFTCOLUMNMATCH>Image</LEFTCOLUMNMATCH>
   <RIGHTCOLUMNMATCH>IMG</RIGHTCOLUMNMATCH>
  </MATCHELEMENT>
  <MATCHELEMENT>
   <LEFTCOLUMNMATCH>Table Cell</LEFTCOLUMNMATCH>
   <RIGHTCOLUMNMATCH>TD</RIGHTCOLUMNMATCH>
  </MATCHELEMENT>
</MATCHQUESTION>
<MCQUESTION>
  <ID>Question8</ID>
  <TITLE>Question 8</TITLE>
  <PDATE DAY="9" MONTH="may" YEAR="1998"/>
  <CATEGORY>HTML</CATEGORY>
  <STATEMENT>The required element of the IMG tag is:</STATEMENT>
  <MCANSWER CORRECTNESS="100">
   <ANSWERTEXT>SRC</ANSWERTEXT>
   <FEEDBACK>Correct</FEEDBACK>
  </MCANSWER>
  <MCANSWER>
   <ANSWERTEXT>WIDTH</ANSWERTEXT>
  </MCANSWER>
  <MCANSWER>
   <ANSWERTEXT>HEIGHT</ANSWERTEXT>
  </MCANSWER>
  <MCANSWER>
   <ANSWERTEXT>HREF</ANSWERTEXT>
  </MCANSWER>
</MCQUESTION>
<SAQUESTION NUMBER-OF-ANSWER-BOXES="1">
  <ID>Question9</ID>
  <TITLE>Question 9</TITLE>
  <PDATE DAY="9" MONTH="may" YEAR="1998"/>
  <CATEGORY>HTML</CATEGORY>
  <STATEMENT>What is the first tag in a HTML document:</STATEMENT>
  <SAANSWER CORRECTNESS="100" ALLOW-TO-ANSWER-IN-
   BOX="all">html</SAANSWER>
  <SAANSWER CORRECTNESS="100" ALLOW-TO-ANSWER-IN-
   BOX="all"><html></SAANSWER>
</SAQUESTION>
<SAQUESTION NUMBER-OF-ANSWER-BOXES="1">
  <ID>Question10</ID>
  <TITLE>Question 10</TITLE>
  <PDATE DAY="9" MONTH="may" YEAR="1998"/>
  <CATEGORY>HTML</CATEGORY>
  <STATEMENT>How many different headers are there in HTML:</STATEMENT>
  <SAANSWER CORRECTNESS="100" ALLOW-TO-ANSWER-IN-BOX="all">6</SAANSWER>
  <SAANSWER CORRECTNESS="100" ALLOW-TO-ANSWER-IN-
   BOX="all">six</SAANSWER>
</SAQUESTION>
</QUESTIONS>

46

APPENDIXD DATABASE DIAGRAM

47


48

LIST OF REFERENCES

[] WebCT Web Site

Information on WebCT, Sienca Teng, Oct 28, 1996
http://www.webct.com/webct/
[] Making CyberProf-formatted questions

Aug 12, 1997
http://www.etb.uiuc.edu/cyberprof/test/demo/Manuals/
Startup/Make_questions.html
[] IMS Project Group Home Page

IMS Project Group
http://www.imsproject.org/background.html
[] Using IMS Meta Data

Specification of IMS meta-data fields used for learning modules
http://www.imsproject.org/metadata/MDusing.html
[] Educom: a retrospective

Educom Review, volume 33, Number 5, 1998, p42-47
also published on the Internet
http://www.educause.edu/pub/ehistory/ehistory.html
Robert C, Herrick Jr
49

[] XML by Example: Building E-Commerce applications

1998, Sean McGrath, Prentice Hall, ISBN 0-13-960162-7
[] Designing XML Internet applications

1998, Michael Leventahl, David Lewis, Matthew Fucs, Prentice Hall, ISBN 0-13-616822-1
[] Extensible Markup Language

W3C Working Draft, Nov 14, 1996, Tim Bray (Textuality), C.M. Sperberg-McQueen (University of Illinois), http://www.w3.org/TR/WD-xml-961114.html
[] Microsoft XML Notepad

Download site and information, July 22, 1998, Microsoft Corporation
http://www.microsoft.com/xml/notepad/intro.asp
[] W3C's Math Homepage

Oct 10, 1998, Angel Diaz, Patrick Icon
http://www.w3.org/Math/
[] MusicML - An XML experience

Jeroen van Rotterdam
http://195.108.47.160/index.html
[] "The XML Scoop on Office 9"

July 05, 1998, Mark Walter and Liora Alschuler
http://www.xml.com/xml/pub/SeyboldReport/ipx980603.html
[] SGML/XML Using elements and attributes

Aug 25, 1998, Robin Cover
http://www.oasis-open.org/cover/elementsAndAttrs.html
[] SGML/XML Using elements and attributes

Collection of news articles from comp.text.xml
Sept 10, 1998, Robin Cover
http://www.oasis-open.org/cover/elementAttr9804.html
[] Elements vs. Attributes

News article in comp.text.sgml, Apr 28, 1992, C. M. Sperberg-McQueen
http://www.oasis-open.org/cover/attrSperberg92.html
[] Elements or Attributes

News article in comp.text.sgml, Nov 18, 1997, W. Eliot Kimber
http://www.oasis-open.org/cover/attrKimber9711.html
[] XML-Data

W3C note, Jan 5, 1998, Andrew Layman (Microsoft Corporation), Edward Jung (Microsoft Corporation), Eve Maler (ArborText), Henry S. Thompson (University of Edinburgh), Jean Paoli (Microsoft Corporation), John Tigue (DataChannel), Norbert H. Mikula (DataChannel), Steve De Rose (Inso Corporation)
http://www.w3.org/TR/1998/NOTE-XML-data-0105/
[] About the World Wide Web Consortium

Feb 5, 1998, Tim Bernes-Lee
http://www.w3.org/Consortium/
[] Extensible Stylesheet Language

Jan 7, 1998, Microsoft Corporation
http://www.microsoft.com/xml/xsl/default.asp
[] QML - Question Markup Language

May 4, 1998, Tekamah Corporation
http://tekamah.com/aravis/qml.html
[] Tekamah Corporation

Tekamah Corporation
1401 Rockville Pike, Suite 645
Rockville, Maryland 20852-1428
(301) 738-8737 (voice)
(301) 738-8738 (facsimile)
info@tekamah.com
[] QML - Quiz Markup Language

1997
Washington State University
http://ems.cea.wsu.edu/qml/
[] Dr. Robert Bamberger

bamberg@eecs.wsu.edu
[] Christopher Shorey

cshorey@wsu.edu
[] Richard Simpkinsson

rsimpkin@gocongs.wsu.edu
[] Authoring interactive questions using the QuizzIT system

May 16, 1996, Lucio Cunha Tinoco (Viriginia Tech)
http://pixel.cs.vt.edu/~ltinoco/quizitdocs/index.html
[] Lucio Cunha Tinoco

tinoco@vt.edu
[] TML

Tutorial Markup Language, Dan Brickley (University of Bristol)
http://www.ilrt.bris.ac.uk/netquest/about/lang/
[] Dan Brickley

NETQUEST Profile/ Desire/ RDF
Institute for Learning and Research Technology
University of Bristol
8 Woodland Road
Bristol, UK
http://www.ilrt.bris.ac.uk/netquest/
http://www.desire.org/
daniel.brickley@bristol.ac.uk
[] EDUCOM/NLII Instructional Management Systems Specifications Document - Version 0.5

Apr 29, 1998, IMS Project group

50


Document converted from word 8 by MSWordView (mswordview 0.4.4)
MSWordView written by Caolan McNamara