As an author you will work with one or more XML languages to develop and organize your content. You do not need to be an expert in these languages in order to create and publish your work - we do our best to make it easy for you through the use of our editing tools and utilities - but it's always helpful to understand what's happening under the hood. If you are interested in learning more about these languages, please see the resources linked below.
- What is XML?
- Content Languages
- Structural Languages
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 exmaple, <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, such as those described on this page.
The following languages can be used to create content in a module:
CNXML - Connexions Markup Language
The Connexions Markup Language (CNXML) is the primary authoring language used for creating and editing modules. All modules are created as CNXML documents, with the option to include additional languages such as MathML or BibTeXML.
The current version of CNXML is version 0.7, released in September 2009. Modules created using CNXML 0.5 or 0.6 can be automatically updated to this version (you will be presented this option when you open an outdated module in the module editor).
Several tutorials are provided to help get you started authoring in CNXML:
- The Connexions Tutorial and Reference, which includes a CNXML tutorial.
- Adding Multimedia to Your Connexions Content, a guide for embedding images, videos, and other multimedia files in your CNXML documents.
- EIP Help, a complete list of CNXML tags and how they can be used within your documents (also available as contextual help links from the Edit-in-Place editor).
- What's new in CNXML 0.7
- What's new in CNXML 0.6
In addition to the links above, there are several additional resources for new authors in the Authoring Help area. If you can't find the answer to your question or would like additional information, you can always feel free to contact technical support.
Developers and others interested in working with CNXML documents may be interested in the following CNXML schemas:
MathML - Mathematical Markup Language
MathML is a W3C-standard XML markup language for creating and representing mathematical expressions. In addition to providing a way for browsers to display complex mathematical expressions that cannot be expressed in HTML, readers can also copy and paste your equations into other MathML-enabled applications, allowing them to evaluate expressions, graph results, and so on. We strongly recommends the use of MathML whenever you are dealing with mathematical content.
There are two styles of MathML, both of which are supported:
- Presentation MathML allows the author complete control over the way an expression is displayed. Presentation MathML is typically easier to work with, but is generally less flexible when working with external applications.
- Content MathML describes the mathematical value of an expression. Content MathML allows your readers the greatest flexibility for reuse of your content, but can be more limited with regards to controlling the display of expressions and symbols.
We recommend that you consider using Content MathML due to its flexibility and emphasis on semantics, and we have provided a free Content MathML editor that you can use to generate the markup for your math expressions and equations. Your content can use either Presentation MathML, Content MathML, or a combination of the two.
In order to view MathML in your browser, you may need to install third-party fonts or plug-ins. Please see our browser support page for more information on configuring your browser to use MathML.
NOTE: When using MathML content inside of a module, use the
Tutorials and Editors
The following resources may be useful to authors working with MathML content:
- Connexions Guide to MathML, an introduction to MathML including several practical examples.
- MathML Editor, a free, web-based MathML editor provided for your convenience.
- W3C's MathML 2.0 Specification, including a complete list of MathML tags and options.
- W3C's MathML Software List, which includes links to editors, plug-ins, and other MathML-related software.
Developers and others interested in working with CNXML + MathML documents may be interested in the following MathML schemas:
* The DTD version of the MathML schema is not used with current versions of CNXML, and is provided for historical purposes only.
BibTeXML - BibTeX Markup Language
BibTeXML is an XML expression of BibTeX, the reference notation used within LaTeX modules. You can use the BibTeXML entries to create an optional
<reference> section at the end of your CNXML module.
NOTE: When using BibTeXML content inside of a module, use the
The following resources may be useful to authors working with BibTeXML content:
- CNXML Reference Extensions, which includes a section on creating BibTeXML references in modules.
- BibTeX Overview on Wikipedia, which explains several of the features common to BibTeX and BibTeXML.
Developers and others interested in working with CNXML + BibTeXML documents may be interested in the following BibTeXML schemas:
* The DTD version of the BibTeXML schema is is not used with current versions of CNXML, and is provided for historical purposes only.
QML - Question Markup Language
QML is a language designed to present interactive questions for online learning modules. Like MathML, you can use QML content within your CNXML documents. Note that while QML provides an opportunity to provide readers with "checkpoint"-style questions and self assessment, answers to these are not scored, recorded, or reported in any way and cannot be used to track student progress through a course.
NOTE: When using QML content inside of a module, use the
The following resources may be useful to authors working with QML content:
- QML Tutorial, which describes several QML features and their use.
- QML Examples, which contains examples of QML interactions used within a module.
Developers and others interested in working with CNXML + QML documents may be interested in the following QML schemas:
* The DTD version of the QML schema is is not used with current versions of CNXML, and is provided for historical purposes only.
The following languages are used to describe structures within modules and collections. These languages are not used by authors working within the environment, and these resources are provided only for those interested in third-party development.
CollXML - Collection Markup Language
The CollXML language is used to define the structure of collections within the system. CollXML documents are currently READ ONLY, with authors using the collection composer interface to create and edit collection structures rather than editing the CollXML directly. As a result, authors are not requried to edit or be familiar with the CollXML language.
There are currently no tutorials for editing CollXML content. Use the collection composer interface to edit collections. At this time, CollXML documents are provided for external development purposes only.
Developers and others interested in working with CollXML may be interested in the following CollXML schemas:
- CollXML Schema (RNG)
mdml - Metadata Modeling Language
The mdml language is used to encode metadata for modules and collections. Changes made to the mdml markup in a CNXML or CollXML document will be ignored by the system; any such changes must be made directly in the module editor or collection composer interfaces. As a result, authors are not required to edit or be familiar with the mdml language.
NOTE: The mdml elements in the read-only metadata section use the
There are no tutorials for editing mdml content. Use the module editor and collection composer interfaces to edit content metadata.
Developers and others interested in working with documents containing mdml may be interested in the following mdml schemas:
(Up to 'Authoring')