This document details my vision for Vex. It is meant both to guide development and to give users an understanding of upcoming features.
Vex is envisioned as an extensible platform for structured document editing and publishing. "Extensible" in this context means a couple of things.
Vex should lower the bar for organizations considering using structured documents. The default installation should provide all the tools required to begin editing and publishing popular XML document types such as DocBook and xhtml, while allowing easy customization such as tweaking the style of generated output.
At the same time, Vex should be powerful enough for professional writers. It should be easy to perform most operations without removing one's hands from the keyboard. New document types should be easily added, and automated functionality should be possible using a built-in macro language.
The initial focus of Vex is to provide a comfortable environment for editing XML-based documents. While it is impossible to edit structured documents without being aware of their structure, Vex should work much like a wordprocessor, implementing many of the operations with which wordprocessor users are already comfortable. Some examples of this are as follows.
Enter
at the end of a paragraph should
cause a new paragraph to be created. Vex does this by splitting
the current XML element into two elements.Enter
at the end of, say, a DocBook
section title should insert a paragraph element after the title,
instead of failing while trying to split the title element.Ctrl-B
should toggle whether the currently selected
text is bold or strongly emphasized.At the same time, Vex should allow the user to fully view and manipulate the structure of their documents.
title
tags in a DocBook
document. Element selection and re-organization should happen
here just as in the Outline view.Currently, Vex enforces partial document validity in that
incomplete elements are permitted. For example, it is permissible
to insert an empty DocBook section
element even though
each section requires a title
element. Otherwise, Vex
will only permit insertions of elements that will not violate
document integrity. However, this approach has drawbacks: Vex
cannot be used to fix existing invalid documents, and it becomes
difficult to add structure to unstructured text. Vex should
therefore permit invalid documents to be edited. Validation should
happen in the background, and validity errors should be flagged in
the left margin with a small icon, much as the Eclipse Java IDE
flags compiler errors.
An advanced feature would be to allow custom editors for embedded documents to be added as plug-ins. For example, it should be able to create an SVG editor for editing embedded SVG documents. One half measure that may be easier to implement would be pluggable renderers. In the meantime, Vex should recognize the difference between the main document and an embedded document (e.g. by a switch in namespace) and render a simply informative box (e.g. a box containing the text "Embedded SVG document").
One common complaint about many XML editors is that they are hard to extend with new document types. Vex treats all configuration items such as document types and styles as files in the workspace so that they can be easily created and modified by users. Future configuration items such as macros and transformation pipelines should also be stored as workspace files. The following features should also be implemented.
Vex is expected to become a platform for document publishing as well as document editing.