The Connexions architecture currently supports two types of content:
All content is saved in XML. We also support the use of MathML, QML, and BibTeXML within modules.
In Connexions, a module is the smallest unit of educational material. It is just long enough to cover one topic, and is usually no longer than a few pages of printed text.
From an instructional standpoint each module is designed to be a relatively short, standalone learning resource - a chapter, a section within a chapter, a journal article, or a single lab experiment, to name a few examples. A well-written module can be taken out of context and used by itself for learning purposes. It can also easily be combined with related modules to form a collection, such as a textbook or online course.
From an architectural standpoint, a module is a container of:
- Content file
- The content file is a simple text file written in CNXML. Connexions offers users several ways to access and edit their module content files, ranging from direct access to the full source CNXML file, to a graphical Edit-in-Place interface for newer authors who aren't yet familiar with the CNXML language.
- Images/other files
- These are optional assorted images, applets, movies, or sound clips that are contained in the module and can be linked to from the content file, or embedded directly into the module (online version).
- Authors may directly edit some of the metadata associated with a module, including the module title, abstract, keywords, language, and subject. Other metadata is automatically supplied by Connexions, such as an original identification number, the version number, "created on" and "last modified" date fields, and information about the authors and other roles.
- Each module must have a copyright holder, a maintainer, and an author associated with it. Other roles which can be assigned to a module include editors and translators.
- Module authors may provide a list of links to information outside of the module that may be of interest to the module's reader. These links appear in the online versions of the modules.
A collection is a sequence of modules for teaching subject topics in a specific order.
Conceptually, if you think of modules as individual building blocks, then collections are the things you can build out of those blocks - in this case textbooks, courses, lab manuals, journal issues, and so on. As a collection author, you are free to use any combination of published modules from the content repository, including content created by others. The collection composer allows you to arrange modules in any order, create "chapters" or other hierarchical structures, and rename modules in order to give you complete control over the organization of the content.
Collections are saved in CollXML. Currently, the CollXML files cannot be edited directly by authors, but may be exported for use on other platforms that support CNXML and CollXML.
Collections can contain:
- Module pointers
- Note: A collection does not actually contain modules -- it merely refers to them via module pointers. When selecting modules for the collection outline, course authors may choose to lock a pointer to a specific version of the module or allow it to always track the most recent version. Collection authors may also choose to overwrite the original title of the module by specifying alternate titles which will appear in the context of the collection. Collection authors may also modify or augment the module authors' links and provide their own list of "see also" links that display when the module is viewed within the context of the collection (online version).
- These are containers under a collection and may be used to group modules into chapters, sub-chapters and so on. Each group has a title field, and may contain other groups or module pointers.
- Authors may directly edit some of the metadata associated with a collection, including the collection title, abstract, keywords, language, subject, and collection subtype ("course", "journal", etc.) Additionally, collection authors may specify an associated institution, code or number, instructor, and homepage. Other metadata is automatically supplied by Connexions, such as an original identification number, the version number, "created on" and "last modified" date fields, and information about the collection authors and other roles.
- Each collection must have a copyright holder, a maintainer, and an author/editor associated with it. A translator may optionally be assigned.
- Connexions allows collection authors to customize the way a module looks when presented as part of the collection. This includes choices in mathematical notation.
What is XML?
XML - or eXtensible Markup Language - is a set of rules for creating electronic documents that can be written in virtually any language and used on virtually any computer system. The idea is to create simple, straightforward documents that can be easily shared and interpreted by a variety of applications across the internet.
While most HTML or word processing documents tend to emphasize what the content should look like (for example, <b>important text</b>), the purpose of an XML document is to describe what the content actually means (<emphasis>important text</emphasis>).
Why do we make such a big deal about meaning vs. presentation? The short version is that while it might seem a little awkward at first, creating documents around meaning makes them much more flexible and powerful. For example, suppose you had a document containing a quotation. For a web page, you might choose to use a italicized typeface to show that this text is somehow special. But what would happen if I wanted to take that same document and make it into an .mp3 audio file, or create a appendix in my book that automatically indexed all of the quotations I used? In this case, italics doesn't help me much. But if I tell the computer that this is a <quote>, then I can leave it to the software to determine what to do with it based on what it IS, not what I think it should look like.
All XML documents are required to follow a common set of rules - for example, every opening tag (<para>) must have a corresponding closing tag (</para>), and tags must be closed in the correct order. Language specifications can be developed in order to create new, specialized XML languages designed for specific purposes, and that is exactly what the developers at Connexions have done in order to create new XML languages to deal with modules (CNXML) and collections (CollXML). In addition, we allow some other standardized XML languages to be used within modules in order to display mathematics (MathML), bibliographies (BibTeXML), and interactive questions (QML).
CNXML and CollXML
CNXML and CollXML are lightweight XML markup languages designed for marking up educational content. The goal of CNXML is to convey the content of the material and not a particular presentation. This has many benefits:
- Smarter searching is possible because you can tell the computer what type of information you are looking for. For example, it is easy to find modules written by a particular author since that information is clearly labeled.
- Separation of content and presentation also enables a single source document to be transformed into multiple output media via stylesheets.