MathDOM is a set of Python 2.4 modules (using PyXML or lxml, and pyparsing)
that import mathematical terms as a Content MathML DOM. It currently parses
MathML and literal infix terms into a DOM or lxml document and writes out
MathML and literal infix/prefix/postfix/Python terms. The DOM elements are
enhanced by domain specific methods that make using the DOM a little easier.
It comes with an XSLT-based output filter for Presentational MathML and
RelaxNG-based document validation.
You can call it the shortest path between different term representations and a
Content MathML DOM. Ever noticed the annoying differences between terms in
different programming languages? Build your application around the DOM or lxml
and stop caring about the term representation that users prefer or that your
machine can execute. If you need a different representation, add a converter,
but don't change the model. Literal terms are connected through an
intermediate AST step that makes writing parsers and serializers for
C/Fortran/SQL/yourfavourite easier. The available input parsers and output
converters are easily extensible.