TeachML is an educational modelling language for contents. The code can be run in the Targeteam software.
This project may be dead since the homepage of the project is dead. See ELML, a very similar (and alive) project.
TeachML has been created in the TArgeted Reuse and GEneration of TEAching Materials (Targeteam) project). “Targeteam is a system for supporting the preparation, use, and reuse of teaching materials. It is centered around the XML based language TeachML which can be classified as an "educational modelling language".” ([1], retrieved 15:50, 29 May 2007 (MEST)).
The Targeteam project is a joint development effort of the group of Prof. Gunnar Teege, University of the Armed Forces, and Prof. Johann Schlichter, Technical University, both at faculty of Informatics, in Munich, Germany. The Targeteam System is an Open Source development, implemented completely in Java. The System and all documentation can be downloaded from the Targeteam homepage and can freely be used and distributed.
The most important element of TeachML is the issue: “Targeteam [...] provides an abstract structure in the form of a homogeneous hierarchy of issues . Content chunks are not identified as “chapter”, “section”, “paragraph”, “list entry”, “exercise”, “slide”, “course unit” etc. Instead, the actual structure is generated automatically from the homogeneous hierarchy when the delivery format is produced. The abstract structure makes it possible, to reuse Targeteam content chunks in differently structured contexts. The same issue can be used in one context as a subsection where the subissues become list entries, and in another context as a separate chapter where the subissues become sections” (Teege, 2002)
The main structure of TeachML can be formalized with a UML class diagram
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- ................................... -->
<!-- TeachML 1.2 Integrated Materials Language -->
<!-- file: TeachML-Int.dtd
This is the TeachML language for complete integrated
TeachML materials. It consists of all TeachML language
modules but TeachML Integration.
Note, that this is not the real DTD, as it is used in the
Targeteam system. The real DTD is modularized into several files,
according to DTD modularization in XHTML, and it makes heavy use of
parameter enities. This file contains all DTD modules and
most parameter entities have been eliminated for better
readability. This file is provided for getting a first quick
impression of the Targeteam DTD.
More information about the elements, their semantics, their use and
examples can be found in the Targeteam documentation, available at
the Targeteam homepage:
http://www11.in.tum.de/forschung/projekte/targeteam/
.................................... -->
<!-- The document element is teachml. -->
<!-- TeachML document element ..................... -->
<!ELEMENT teachml ( module ) >
<!-- Next, all sublanguages for content are integrated. Each
sublanguage XXX contributes the elements in ContentXXX.mix
to the elements which may be used anywhere in content. -->
<!-- Language Core -->
<!-- content contribution elements: -->
<!ENTITY % ContentCore.mix
"note | definition | code | defined | emph | quote | ref | whatsit | xor"
>
<!-- complete element set: -->
<!ENTITY % ElementsCore.mix
"%ContentCore.mix; | header | intro | kernel
| details | illustration | exercises | metaissues | summary
| module | issue " >
<!-- Sublanguage Box -->
<!-- complete element set: -->
<!ENTITY % ElementsBox.mix "vbox | hbox | cbox | ivbox | ihbox" >
<!-- content contribution elements: all -->
<!ENTITY % ContentBox.mix "%ElementsBox.mix;" >
<!-- Sublanguage Tup -->
<!-- complete element set: -->
<!ENTITY % ElementsTup.mix "tuples | metatuple | tuple | ten" >
<!-- content contribution element: tuples -->
<!ENTITY % ContentTup.mix "tuples" >
<!-- Sublanguage Astep -->
<!-- complete element set: -->
<!ENTITY % ElementsAstep.mix "atom-stepping | atoms | step | nosteps" >
<!-- content contribution elements: all -->
<!ENTITY % ContentAstep.mix "%ElementsAstep.mix;" >
<!-- Additionally, content elements which are only present
after integration (this is the atom element) -->
<!-- complete element set: -->
<!ENTITY % ElementsIntegrated.mix "atom" >
<!-- content contribution elements: all -->
<!ENTITY % ContentIntegrated.mix
"%ElementsIntegrated.mix;"
>
<!ENTITY % Content.mix
"| %ContentCore.mix; | %ContentBox.mix; | %ContentTup.mix; |
%ContentAstep.mix; | %ContentIntegrated.mix;" >
<!ENTITY % Elements.mix
"| %ElementsCore.mix; | %ElementsBox.mix; | %ElementsTup.mix; |
%ElementsAstep.mix; | %ElementsIntegrated.mix;" >
<!-- Now we define the language modules. They only
interact via the Content.mix parameter. -->
<!-- TeachML core language ..................... -->
<!-- Parameter defaults: -->
<!ENTITY % Inissue.class
"header | intro | kernel
| details | illustration | exercises | metaissues | summary"
>
<!-- The Root Element: module. -->
<!ELEMENT module ( issue )+ >
<!ATTLIST module
id ID #IMPLIED >
<!-- ********************************* -->
<!-- The sublanguage for structuring -->
<!ELEMENT issue ( %Inissue.class; )* >
<!ATTLIST issue
id ID #IMPLIED
kind CDATA #IMPLIED
author CDATA #IMPLIED
affiliation CDATA #IMPLIED >
<!ELEMENT header ( #PCDATA %Content.mix; )* >
<!ELEMENT intro ( #PCDATA %Content.mix; )*" >
<!ATTLIST intro id ID #IMPLIED>
<!ELEMENT kernel ( #PCDATA %Content.mix; )* >
<!ATTLIST kernel id ID #IMPLIED>
<!ELEMENT summary ( #PCDATA %Content.mix; )* >
<!ATTLIST summary id ID #IMPLIED>
<!ELEMENT xor ( alt )* >
<!ELEMENT alt ( #PCDATA | issue %Content.mix; )* >
<!ATTLIST alt types NMTOKENS "standard">
<!-- Issue groups: -->
<!ENTITY % [http://www.eurodl.org/materials/contrib/2002/7teege/teege.htm Teege, 2002]Issuegroup.attrib "
id ID #IMPLIED
header CDATA #IMPLIED
labels (numbers | letters | capletters | dots) #IMPLIED
first-label CDATA #IMPLIED
label-pre CDATA #IMPLIED
label-post CDATA #IMPLIED
" >
<!ELEMENT details ( issue | xor )* >
<!ATTLIST details %Issuegroup.attrib; >
<!ELEMENT illustration ( issue | xor )* >
<!ATTLIST illustration %Issuegroup.attrib; >
<!ELEMENT metaissues ( issue | xor )* >
<!ATTLIST metaissues %Issuegroup.attrib; >
<!ELEMENT exercises ( issue | xor )* >
<!ATTLIST exercises %Issuegroup.attrib; >
<!-- *********************************** -->
<!-- The sublanguage for textual content -->
<!ELEMENT definition ( #PCDATA %Content.mix; )* >
<!ATTLIST definition id ID #IMPLIED>
<!ELEMENT note ( #PCDATA %Content.mix; )* >
<!ATTLIST note id ID #IMPLIED>
<!ELEMENT code ( #PCDATA %Content.mix; )* >
<!ELEMENT defined ( #PCDATA %Content.mix; )* >
<!ELEMENT emph ( #PCDATA %Content.mix; )* >
<!ELEMENT quote ( #PCDATA %Content.mix; )* >
<!ELEMENT whatsit ( #PCDATA %Content.mix; )* >
<!ATTLIST whatsit kind CDATA #REQUIRED>
<!-- ************************************ -->
<!-- The sublanguage for cross references -->
<!ELEMENT ref ( #PCDATA %Content.mix; )* >
<!ATTLIST ref target-module NMTOKEN #IMPLIED
target-atom NMTOKEN #IMPLIED
target NMTOKEN #IMPLIED
url CDATA #IMPLIED>
<!-- ************************************ -->
<!-- The sublanguage for simple includes -->
<!ELEMENT include EMPTY >
<!ATTLIST include select CDATA #REQUIRED>
<!-- TeachML Box ................... ..................... -->
<!ELEMENT vbox ( %ElementsBox.mix; )+ >
<!ATTLIST vbox
width CDATA #IMPLIED
id ID #IMPLIED >
<!ELEMENT hbox ( %ElementsBox.mix; )+ >
<!ATTLIST hbox
width CDATA #IMPLIED
id ID #IMPLIED >
<!ELEMENT cbox ( #PCDATA %Content.mix; )* >
<!ATTLIST cbox
width CDATA #IMPLIED
id ID #IMPLIED >
<!ELEMENT ivbox ( %ElementsBox.mix; )+ >
<!ATTLIST ivbox
width CDATA #IMPLIED
id ID #IMPLIED >
<!ELEMENT ihbox ( %ElementsBox.mix; )+ >
<!ATTLIST ihbox
width CDATA #IMPLIED
id ID #IMPLIED >
<!-- TeachML Tup ................... ..................... -->
<!ELEMENT tuples ( metatuple?, tuple+ ) >
<!ATTLIST tuples
arity CDATA #IMPLIED
id ID #IMPLIED >
<!ELEMENT metatuple ( ten+ ) >
<!ELEMENT tuple ( ten+ ) >
<!-- "ten" is the abbreviation of Tuple ENtry -->
<!ELEMENT ten ( #PCDATA %Content.mix; )* >
<!-- TeachML Astep ................... ..................... -->
<!ELEMENT atom-stepping ( #PCDATA %Content.mix; )* >
<!ATTLIST atom-stepping
id ID #IMPLIED >
<!ELEMENT atoms ( atom )+ >
<!ELEMENT step ( #PCDATA %Content.mix; )* >
<!ATTLIST step
atom CDATA #REQUIRED
initial (true|false) "false" >
<!ELEMENT nosteps EMPTY >
<!ATTLIST nosteps
atom CDATA #REQUIRED >
<!-- TeachML Integration extensions .................... -->
<!ELEMENT atom ( alternative )+ >
<!ATTLIST atom
id ID #IMPLIED >
<!ELEMENT alternative EMPTY >
<!ATTLIST alternative
name CDATA #REQUIRED
extension CDATA #REQUIRED
type CDATA #REQUIRED
derived-from CDATA #IMPLIED
derived-by CDATA #IMPLIED>
The following text is copy/paste from http://www.targeteam.net/ (!), , retrieved 15:50, 29 May 2007 (MEST).
The feedback from learners was positive about the rich offer of different delivery formats which can be selected according to the learning situation and personal preferences. The main delivery formats offered where a fulltext script in PDF, a fulltext online script as structured HTML, and a short "slide" version in HTML used during the lectures.
After a period of accomodation the abstract structure and the separation from layout of the Targeteam content was perceived by authors as making the development of teaching materials substantially easier. However, this is only true for the development of new content or the reuse of Targeteam content. The reuse of "legacy content", such as content in LaTeX, Powerpoint or Word format, is rather difficult.