In my last two tips, I've walked you through DTDs that we built for our test engine that lets us build question-and-answer sequences and questionnaires of all kinds. Today, I'll talk about the metadata that we capture at the course level to help us manage related content modules (which we call lessons), lesson review questions, final exams, and other information we deliver to our online students, and make available to our instructors.
To begin with, let me explain exactly what our online course DTD captures:
- It identifies each course uniquely with an auto-generated course prefix.
- It defines e-mail addresses for student agreements, instructors of record, and our software support team, so that we can dynamically insert their e-mail addresses into HTML pages generated on the fly.
- It defines access controls for three categories of users: guests who can access only the first lesson of any course, students who have not yet approved a student agreement and can only access the rules of engagement and a course overview, and students who have approved that agreement to gain full access to a course's complete materials. We're currently working on adding a fourth category that recognizes instructors or developers who obtain immediate and complete access to all course elements (so far, this hasn't been needed because we've only used this tool in-house, but we're getting ready to extend our licensing to a third party who needs such access).
- Right now, we also point to a file that lists all course component elements, including key resources such as lesson files, lesson reviews, final exams, and so forth. We're in the process of designing XML to capture all this information explicitly. That will increase the number of elements in our DTD but will also make a lot of implicit information stored in other files readily available through a single interface.
- We define root URLs where course materials reside, and where individuals go to log in, where they present an account and password to access course materials. This lets us define multiple login instances (and thereby run simultaneous versions of the same classes in parallel, each with separate student databases).
- We define multiple e-mail message types, so we can dynamically complete pre-defined templates with login and session information for signup, course activation (after students approve a course agreement), and receipt notification for final projects in classes that require them.
- Finally, we track all previously taken classes in a given semester for which databases are available (to instructors) online, and provide a mechanism to make signup, activation, and access to currently open classes accessible to students.
We've actually had an easier time letting our evolving understanding of our needs shape the XML that captures metadata than we ever expected. Bill put it eloquently: "The nice thing about using XML is that it supports gradual changeover in our environment. We can evolve document structures as needed without lots of extra redesign or programming." From somebody with nearly 30 years in IT, that's pretty strong talk!
Other benefits of our approach include:
- We keep finding new ways to tease data out of our online environment. For our local community college, we plan to capture all course catalog information about classes dynamically, so we can use their labels and terminology straight from the source.
- We're planning to add explicit content identification and management data to this metadata (it now resides in an external file identified through a CourseControl element in our current XML notation). This should let us enumerate all lesson files, review question scripts, final exam scripts, tips, and ancillary reading materials as part of a native XML course description, instead of managing it externally.
- Our current structure support "cookie cutter" (cut and paste) creation of new classes, new sections, and other data as needed. All we have to do is copy an existing data structure at the same level, then edit the copied element content and attribute values to make necessary changes. This is far faster than building new data from scratch.
- We use a validating XML parser to check course description files for completeness and correctness. This makes quality control on what had been an ad hoc project management task easier to test and correct than it ever had been before.
Send an e-mail to Ed at email@example.com if you want a copy of the course DTD and some sample markup, or if you have comments or questions on this or other XML topics. We're sold on this approach, and would like to sell you on it, too...
Ed Tittel is a principal at LANWrights, Inc., a wholly owned subsidiary of LeapIt.com. LANWrights offers training, writing, and consulting services on Internet, networking, and Web topics (including XML and XHTML), plus various IT certifications (Microsoft, Sun/Java, and Prosoft/CIW).
Did you like this tip? Love it or hate it, why not drop us a line and let us know?