SGMLtools Editor Whitepaper
PrevSGMLtools Editor WhitepaperNext

Key Technologies


As the primary target is writing DocBook documentation, the markup language to support is SGML. The SGMLtools project had several good reasons for opting for SGML as the standard, not in the least because of the lack of tag minimization makes XML quite cumbersome to write with a plain text editor. Furthermore, a DTD with the quality and flexibility of DocBook isn't available under XML (yet). When it becomes available, it will run directly under the editor because it will use a strict subset of the available functionality.

We don't need full SGML support, though. The editor will contain a built-in SGML parser that can just handle the SGML reference syntax with larger capacities (ie., the DocBook SGML declaration). This subset will likely make it more feasible to generate a suitable SGML parser with a standard tool like ANTLR. I don't know whether this is a completely correct term, but I'll call it the 'enhanced reference concrete syntax' in this document.


Key concepts in the definition are portability, distribution, net-awareness, and other terms that point to Java. There are a number of benefits in using Java which will become clearer as technologies and their application is described; so for the moment you'll have to accept that this is a good language/technology choice.

Furthermore, in the years of Java programming experience I have noticed a much higher productivity in Java than in the classical platform-independent programming languages like C or C++; as this is quite a substantial project, this could result in anything from major timesavings to making the project feasible at all.


Python, especially in its incarnation of JPython, will give the editor scripting capabilities. JPython is also a very good candidate for the creation of input and rendering stylesheets, providing scripting glue between the various editor components. The idea is that a JPython "style sheet" is called by GUI code in order to render markup and to deal with user input. The JPython style sheet has full access to Java, and thus can do anything from returning a style hint ("print this stuff in boldfact") to popping up dialog boxes for structured data input.

SGMLtools Editor Whitepaper Basic Editing