Introduction
We have implemented a set of domains in Aldor, which include:
-
A set of XML DOM functions, and the respective categories.
-
A set of functions for constructing various Presentation
and Content
MathML constructs.
-
Various Unicode encodings and a category which enumerates all of
the functions which must be implemented in these domains. These
domains are intended to be a base for the XML encodings and
parameterise the XML domains.
-
Two categories which may or may not be satisfied by a domain:
-
TranslateableFromMathML: This contains function
signatures to translate from valid Content MathML to Aldor
objects.
-
ConvertibleToMathML: This contains function signatures
to translate between Aldor objects and Content MathML and
similar functions to convert to Presentation MathML.
-
Extensions of some of the standard Aldor domains, so that they
satisfy the TranslateableFromMathML and
ConvertibleToMathML categories.
We describe the structure of the domains that we have implemented
in Aldor and the interoperability between them.
We have implemented a category UniCodeCharacter which contains
signatures of a number of functions which must be implemented in order
that a domain has this category. These are specifically:
-
construction functions, which given different forms,
will construct a character in the unicode encoding.
-
functions which, given a character in the unicode encoding, will
deconstruct it into various different formats.
-
Quick versions of these functions, which do not do any checking.
We have also implemented the following unicode encodings:
XML DOM Implementation
We have implemented a subset of the
XML DOM level 2 which is
sufficient for our needs. The domains which implement this subset
are parameterised by a domain of
type UnicodeCharacter. The encoding which will underlie the strings
encoding the XML will be encoded using these domains. The actual code
for these functions is performed using the lowest level routines
available in the Aldor system. The sort of functions which are
available in these domains include:
- Construction functions which construct the different types of XML
objects. The XML objects include namespace qualified objects
(i.e. attributes and elements whose names have prefixes).
- Traversal functions, to allow traversing of the XML tree.
- Destructuring functions, to allow querying specific parts of
XML objects, e.g. querying the name of an object, querying the value of an
attribute.
Presentation MathML, Content MathML Domains
These domains are built over the XML domain mentioned above. They
provide functions for constructing MathML objects, and will eventually
provide a complete coverage of MathML.
Extension of other domains
Even with all the above domains implemented, it is still necessary to
extend other domains with functions to implement the translations.
A specific translation will be dependent on the representation of
the Aldor object as well as the form of the MathML object
corresponding to this object. The categories containing the functions are:
-
This category contains signatures of functions which allow translation from an
object, given in content MathML, to the corresponding Aldor object. Two
functions are catered for:
- fromMathML : (UCH:UniCodeCharacter,MathMLCont(UCH)) -> %;
this function translates from a valid Content MathML string to an
object of the domain. An error should be raised if the MathML object
is anything other than the type of object in question.
- qFromMathML : (UCH:UniCodeCharacter,MathMLCont(UCH)) -> %
this function will perform a quick varient of the same translation
as fromMathML. No validation of the elements or attributes
takes place. If the MathML is not a valid
representation for this type of mathematical object no error is
raised by this function. A failure or incorrect result shall
result from some other source.
-
This category contains signatures of functions which allow conversion
between Aldor objects and Presentation mathML or Content MathML
objects. The function signatures contained in this category are:
-
convertToMathMLPres : (%,UCH:UniCodeCharacter) -> MathMLPres(UCH);
This function converts from an Aldor object, given in the
current domain, to a presentation MathML object. The encoding
of the object shall be in the Unicode encoding given as the
second parameter.
-
convertToMathMLCont : (%,UCH:UniCodeCharacter) -> MathMLCont(UCH);
This function converts from an Aldor object, given in the
current domain, to a content MathML object. The encoding
of the object shall be in the Unicode encoding given as the
second parameter.
Contact: