SGML: MetaMorphosis-free

SGML: MetaMorphosis-free

Article: 10265 of comp.text.sgml
From: thomas@dennis.MID` (Thomas Plass)
Newsgroups: comp.text.sgml
Subject: ANNOUNCEMENT: free SGML conversion software
Date: 04 Aug 1995 13:12:52 GMT
Organization: MID/ILG, Heidelberg
Message-ID: <THOMAS.95Aug4151253@dennis.MID`>

Heidelberg, 4 August 1995

SGML consultants MID/Information Logistics Group is pleased to
announce MetaMorphosis-free, the free version of its MetaMorphosis
tree-based conversion system for SGML document instances (MM).  

MetaMorphosis-free is available for anonymous ftp from the Oslo server as /pub/SGML/Demo/mm-free.tar.gz.

Though MM is commercial multi-platform software, MetaMorphosis-free is
functionally completely unrestricted but available only for the Linux
operating system.  Use of MetaMorphosis-free is governed by a special

MM is a tree transformer and annotator that uses the ESIS
representation of document instances.  It is used to convert SGML
document instances to any other format such as arbitrary
word-processor formats, formats used in hypertext systems, database
tables, and of course SGML.

A special feature of MM's approach to conversion is the in-memory
representation of whole documents instead of the traditional
sequential processing of character streams.  This means that at all
times during the script-driven conversion process, all information in
the tree(s) can be accessed (or synthesised) in order to manipulate
nodes in the tree(s).  MM provides sophisticated means for navigating
trees, addressing nodes on the basis of arbitrarily complex queries,
and context-sensitive processing of nodes.  A built-in
pattern-matching language can be used to manipulate string data
contained in nodes.

The conversion itself is target-driven: what an MM script specifies is
what the result of the conversion (which is another tree, the target
tree) should be.  Output is generated by adding arbitrary information
to nodes in this target tree.

Here's a simulated faq-style section that hopefully answers some
questions about MM:

* In what differs MetaMorphosis-free from the commercial version?

  The free version essentially consists of the unmodified MM kernel.
  It also contains built into the program three so-called back-ends
  (for SGML, ASCII text, and a special debug format).  

  The commercial version has the following additional features:

    * a work-flow system (GUIs in the future)
    * a set of stand-alone back-ends for proprietary output formats,
      but also TeX/LaTeX
    * a set of useful libraries (e.g. for CALS tables)
    * support (there is no free support for the free version)

* It reads only SGML?

  MM feeds on the output of SGMLS to build the source tree.  You can
  load other files from within MM but converting them into a tree
  structure is highly non-trivial.

* You speak of "trees".  Can I have more than one?

  Yes.  In any case, there are the source tree and the target tree
  (whose construction is governed by your script).  There are also
  other system-trees.  But you can construct `forests'.  Note that all
  trees are interlinked.

* Won't all these trees simply drain my system of all available
  memory if I load large files?

  No.  MM implements its own paging regime to keep memory usage to a
  minimum.  Therefore even small systems can handle large input files.

* I'm used to sequential processing of SGML.  What's the advantage of
  using a tree?

  If your data processing needs are satisfied by sequential
  processing, fine.  But the next time you want to e.g. resolve
  forward-references, or need to re-arrange nodes you haven't seen
  yet, or when processing depends on structures in contexts not yet
  passed to you, then think how having random access to the document
  structure would make life a little easier.  Consider taking full
  advantage of the facilities SGML provides.

  Also, you can use MM interactively.

* MM is used to transform and annotate SGML documents.  It also uses
  an ESIS tree to navigate the structures.  So, does it do DSSSL and

  DSSSL: No.  Though from afar it may appear that a DSSSL processor
  and MM do the same thing, when you get closer you'll see the
  differences.  Currently, we have no plans to make either the
  transformation part (STTP in DSSSL) or the annotation part (STFP in
  DSSSL) DSSSL-conformant.  Also, the expression languages differ
  wildly.  If you want to generate input files for your formatter you
  will need to get your hands grubby on its codes.

  HyTime: Not yet.  We plan to add direct HyTime support in future
  releases.  Expect to see support for parts of the base, measurement,
  location address and hyperlinks modules and some of their options.
  Also an implementation of HyQ is on the cards.  Watch this
  space.  In the meantime you might want to implement required
  functionality in MM code.  But we have difficulty envisaging anyone
  building a browser on top of MM.

* OK, but I still need to learn a new language, right?

  Right.  The MM language is not a general purpose programming
  language.  Rather, it is small and specially optimised for the
  manipulation of (SGML) trees.  It is declarative in nature and
  code can be -very- compact.

  To get you started, we include a tutorial application that solves a
  real-world task: that of converting an SGML instance (the MM manual)
  into a set of highly interlinked HTML2 pages.  We encourage you to
  study the application, its input as well as its output and, of
  course, the liberally commented script.  In particular, look at how
  easy it is to endow the output HTML with significant hypertext
  functionality, and how trivial re-arranging structures can be.

The distribution comes with a fair bit of documentation in various
formats: SGML, Postscript (generated from the SGML) and HTML2 (which
you can generate from the SGML source by simply running a script).
We also include the necessary files to view the manual using
SoftQuad/Synex's recently released free Panorama SGML browser.

For MID,

Thomas Plass
MID/Information Logistics Group, Heidelberg