packages icon
This directory contains


an simple sgml to "anything" converter.

* Remark

This is a very early release.
I hope someone finds it as useful as I do. If so, please, give me feedback, 
so I can decide to do further development with respect to the public or 
my own purpose.

Feel free to email me as .

* What is it good for?

Sgml2 is to convert sgml-files to "anything", where "anything" means
any document-description by ascii-files (like say TeX, roff, lout and
so on). 

The output can be depending of the values of options of sgml-tags and
may in-/exclude parts depending whether an option is set or not.

Entity-definition like > can be converted to any other

A magical (yet hard-coded) input-cooking is done for regular text
(outside of markups) for easy encoding accented characters or things
like > and &. It is close to the german.sty from LaTeX. (see below)

Sgml2 does not check a document against a DTD, nor accept tag-abbreviation 

* How does it work?

o Sgml2 needs a configuration-file which is used to determine what
 tag-names are known and how the affect the output. At this time only a
 config-file for HTML exist (File-name html). The Format is described
 at top of this File. It supports most HTML+ -tags and some
 self-defined for my own use (JW as a comment, ADDR and BIBL as an
 address- and bibliographi-database and some more).

 Values of options assigned to Markups are represented by $(optionname)
 in this file, and Text only to be included if otion optname is set may
 be included ans %optname(text). see html.

 More the configuration-file determines which Entity's are converted to
 other representations

o Magical character-cooking on input is done for:
 * german character like "a -> ä to "s ->szlig;
 * "> -> >
 * "< -> &lt;
 * "& -> &amp;
 * "" -> "
 Any not recognized sequence is treated unchanged.

o The environment-variable SGML2LIB is used to locate the
  configuration-file after looking up the current directory.

o To perform a conversion do:

 sgml2 config-file-name < infile > outfile

 for instance:

 sgml2 html < example.sgml > example.html

* How to install?

Simply make a directory sgml2, cd into it, un-tar the archive and type make. 
Then you may strip the resulting sgml2 and move it to a directory in your path.

For customization you may adjust the field "theDirs" of char* at top
of the File main.c. These are the prefixes (and order of them) used by
sgml2 to locate it's configuration-file. The configuration-file(s)
should be moved to a location referenced there or by the
envionmentvariable SGML2LIB.

If you don't have bison your yacc may complain about mrkprint.y for
any unknown reason (as on my AIX/RS 6000). For that case or if you
don't have yacc anyway the files mrkprint.c and sgml2.c are provided,
which are really and from the
bison-output. So you can adjust the makefile and continue with these
files as source.

* Things to do in the future:

Feel free to email me what you would like most to see in a future

  - set up some files for conversion to TeX, lout, [gn]roff, man.
    (Please could some good soul do this for me at least for roff and
    man. I know almost nothing about them.)

  - add option -n to supress output except for special requested.

  - add option "-r tagname" to select the range <tagname> to
  </tagname> for (non)printing.

  - add the option "-t tagname" to select the output-representation of
  <tagname> for (non)printing.

  - extend the syntax of tagname for -t and -r to somthing like
  tagname%optionname=value to restrict the selection to tags with
  tagname and the option otionname set to value.
  (This would let you select single Addresses or blibliographies from
  a database-file.)

  - add the option "-o filename" to select an output-filename

  - add input-files (instead of stdin)

  - anything else? Suggestions?

  - it's at this time partially quick and dirty programmed; clean-up