Article: 10265 of comp.text.sgml
From: thomas@dennis.MID` (Thomas Plass)
Subject: ANNOUNCEMENT: free SGML conversion software
Date: 04 Aug 1995 13:12:52 GMT
Organization: MID/ILG, Heidelberg
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
ftp.ifi.uio.no 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.
MID/Information Logistics Group, Heidelberg