| | - WYSIWYG
- The first requirement that this group of authors imposes on us is that the tools they use be WYSIWYG: they need to see exactly what it is they are creating. The problem with this requirement is determining what you actually get when you are authoring "content" to be presented in several different ways on different media: Do you show the user the Web-page equivalent? One of the six different print renditions of your SGML? The CD-ROM version? What do you really "get" when what you are creating a structured document?
There are two solutions here: (1) fix your authors; and (2) build more powerful "WYSIWYG" features.
"Fixing authors" requires weening them away from the "virtual page" concept of what a document is, and moving them toward the concept of authoring "data". This is related to the idea of "forms authoring". Because an SGML document contains rich structural information, it is possible to create an interface that is a "flexible form," allowing the structure of the information itself to dictate the appearance and functionality of the interface.
If, when we load an instance into the system, it has a knowledge of what basic roles each element plays (a matter of configuration, see below), then a convention for authoring each type of element could be established, hopefully across all applications. Think about the types of distinct roles played by what we see in a "virtual paper" document: we have paragraph-type objects (including lists), we have tables, figures, and in-line elements that perform a variety of roles (link-ends, emphasis, content-specific tagging, etc.) The variety of these "on-screen" roles is not so great that it couldn't be captured in a useable fashion, but one that has been generalized according to convention. The appropriate choices for indicating which of the elements that share that behavior could then be displayed for user selection.
The place to look for this kind of "convention" is the Web: because interactive forms through CGI established a particular look and feel for the creation and use of forms, more powerful languages such as Java have adopted the same conventions. While simple text fields and text-entry boxes may not be sufficient for good structured authoring, a similar approach could be taken for an "appearance-neutral" interface convention that was somewhat richer. The key here is having a convention that unsophisticated authors can be reasonably expected to learn and understand, and to use across all similar applications. The ability to add deeper structures, and more specific structures, will need to be realized, of course.
Real WYSIWYG editing demands format, however, and is too important to be sacrificed. The second option, is, therefore, to let authors choose which deliverable they are authoring for.
The Importance of Format:
There has been a long-standing tenet in the SGML world that we must get authors to understand the difference between "content" and "format". While this is true, it can also be a damaging perception. One of the SGML editing tools that is gaining in popularity today is FrameMaker + SGML. One of the reasons for the success of this editor is that, unlike more "structure-based" SGML editing tools, it has a very rich screen presentation.
The key here is that the same relationship that we use to derive structure from appearance in a document analysis exists when authors are creating documents as well: structure is reflected in format. If properly implemented, on-screen formatting encourages authors to build correct structures.
It is possible to build an application that gives the author a choice of which deliverable to be derived from the SGML they "see" while they are working. In order to implement this is a WYSIWYG fashion, however, we need to have style-sheets that can be transferred between applications: I feed my SGML instance and my style-sheets to the application, and for each style sheet that is available, I can select that as my on-screen presentation. An interesting example of this is seen in the GRIF XML authoring demo, which uses cascading style sheets to drive WYSIWYG authoring. (There are a number of other implications here, too, which will be discussed in the next section, which addresses the formatting requirements more explicitly.)
- FORMAT
The "standard" SGML formatting functions will all be needed: context-definition, attribute sensitivity, inheritance, sibling distinctions, etc. We will not dwell on these details: suffice it to say that formatting capability will need to exist that is the equal of what is available in today's word-processing capabilities. (A good example of how to develop a GUI for creating this level of stylesheet exists in SoftQuad's Panorama Pro.)
If our users expect to have the format of their document available to them, they will also expect other people who work with the information to do the same. There is an absolute requirement for SGML documents to have importable and exportable stylesheets that are expressed in a standard fashion. The content and formatting of a document should be a single entity, even if there are multiple formats available to the user.
While cascading style sheets may give us this ability on the most primitive level, they are not enough. Consider the ways in which several deliverable versions of the same document relate to each other: very often, an element displayed in one view is hidden in another. This is a simple matter of having a "show/hide" switch for each element. This is not, however, enough: a print document delivered to the Web will not only look different, it will be organized differently, with some elements re-ordered, others producing different functionality (cross references, for example), etc. The ability to re-order information for the express purpose of authoring single-source/multiple-output documents in a WYSIWYG fashion is critical. Authors will need to see the appearance of their documents in all of their multiple incarnations, so that they can edit and write accordingly.
This functionality does not currently exist in any editing tool that I have seen, but the idea that this kind of transformation needs to be part of the same stylesheet that carries the formatting is present in DSSSL.
DSSSL offers us the key to capturing a full set of the needed information in a standard fashion, and there is an important implication here for developers: the logic used in DSSSL to describe document formatting is something that can be rendered in C++ in the creation of application-specific binary internal representations of those documents. Even such a fairly constricting API such as the Microsoft Foundation Classes allows for each application to determine what a "document" will look like for that particular application. If the internal logic of DSSSL is followed, then deriving a DSSSL spec on export (and using it to drive document views) becomes a much simpler problem.
Structure On-the-Fly (and other problems) with XML:
One potential ramification of this capability has already come up in the discussions surrounding XML: will DTDs need to be created at the time of authoring to allow for the re-ordering that will be required? (An interesting application with great potential in this area is OCLC's "Fred".) To be XML-compatible, it is suggested that an author have the ability to choose an existing DTD (as they currently choose "templates" in word processors) to author in, or that they have the ability to generate their own structure, with a "Fred"-style DTD generated on output to allow for the document to be parsed. (In the latter scenario, they would also be responsible for generating formatting information to accompany their "customized" element structures.)
XML presents us with a number of scenarios that are probably necessary in the great scheme of things, but that are upsetting to SGML traditionalists: documents will only be parsed to the extent that they need to be parsed for the purposes of the application using them. Hand-in-hand with this capability comes the looming spectre of a host of new processing instructions that are application-specific. The requirement exists, however, that the ideal editing tool must handle XML, and do intelligent placement of DTD declarations in the internal declaration subset, etc., to be fully XML-compatible. Similarly, it will need to generate and handle the PIs that will be encountered.
Ultimately, the DTD that travels with a document should become an inseparable part of it: such things as notations could be profitably manipulated by applications that automatically filter graphics formats for display, for example. Unless the application has access to the DTD whenever it is needed, it will not be possible to make the minor accommodations that may be required to support a specific feature. (See "Configurability," below.)
Conditionality:
One of the most powerful features of SGML is that it allows a single document to contain different-but-related information in a single document, such that the required version for any specific output is used when appropriate. A good example of this exists in writing technical documentation for different platforms, or versions of a product: the Unix version of the documentation is 80% the same as the Windows 95 version, but the 20% of difference is important.
A good SGML editor is required to support this kind of conditionality, whether indicated in the SGML as marked sections, attribute values, or distinct elements. This is largely a formatting issue: "show/hide" should take care of it, but the requirement stands that even if I can't see it in a particular view, the information remains a part of the document.
- CONFIGURABILITY
Another major requirement of SGML editors is that they be able to handle arbitrary DTDs with a minimum of effort to configure. Existing tools that handle arbitrary DTDs are all less-than-ideal in this respect: they require too much effort on the part of an SGML "expert" (or an expert in the specific application) to accommodate new DTDs, or revisions of existing DTDs. At the very least, the tool should contain a simple point-and-click GUI interface for configuring new DTDs on import. Configuration would include default formatting (if not specified in a style sheet), and element and attribute behaviors/functionality (to identify graphics, tables, links, conditionality, etc.).
The "configuration file" would ideally be in some standard format that could be used by other applications as well. While this necessity has been anticipated for format and transformation in DSSSL, and for linking in HyTime, the idea that functionality (as well as appearance) is tied to structure in a meaningful way has not yet been fully explored. It is suggested that a standard be developed (if only a standard DTD), to express the functionality that is important to those people who are creating editing applications and other SGML software. For performance reasons, such a standard "configuration file" might need to be written in a binary format (Java's byte-stream code springs to mind...)
- LINKING
The proprietary ability of today's word-processors and HTML editors to do cross-references and links is something that can be bettered in an SGML editor; particularly with SGML Open catalogs, and the linking techniques offered us through HyTime and TEI, there is no reason why the links that have traditionally been expressed as hard-coded local pathnames cannot take advantage of indirection to become more portable. Why shouldn't my editor simply ask for the local location of a specific entity (as indicated by it's public identifier) the first time it needs to use it? (Interesting applications to look at are HyBrowse and HyMinder; the upcoming crop of XML demos should also provide some interesting functionality.)
At the same time, HTML editors such as PageMill offer a good example of how GUI behavior can make fairly complex linking simple to use - it is fairly straightforward to create a client-side image map, for example, using point-and-click techniques. (Some of today's structured editors would require the insertion of a number of elements, and then the entry of pixel coordinates and link targets in a fairly non-intuitive "specify attribute" dialog for those elements.)
The problem here is that each DTD may handle linking behavior in different ways - the "standard" link behaviors can be made configurable, however. What is needed is a general industry-wide concensus about what the major linking behaviors are, perhaps through the offices of SGML Open. (With XML, TEI, and HyTime all addressing this issue, surely a cataloguing of major linking strategies is possible...)
Ultimately, authors should be able to use a familiar mechanism (a "file open" dialog box) to indicate sophisticated links expressed in an indirect fashion; a simple algorithm could allow every resource on my computer to have a public identifier, generated when needed if not already in existence. On export, the editor should produce a document-specific SGML Open catalog file, so that other applications could determine in advance what entities would be required for processing that document.
Further, the ability to identify specific linking behavior and the purpose for a link are things that can be expressed in a standard way through HyTime - my editing tool should know enough to generate this syntax, and to prompt me for what it does not already know through configuration.
Further, the capability should exist for a document management system to supply my editing application with resources that exist elsewhere on a network, or even on the Web. This might require some integration of the tool with the system of which it was a part, but the support needs to be present in the editor's API. If the existence of these resources is something that can be verified, then my editor can also help my authors by performing link validation routines when documents are opened, or links are inserted, and drawing attention to any links that are broken in simple language.
Again, a standard for interaction between structured documents and databases would need to be implemented - database standards could be easily leveraged here: ODBC, SQL, etc. (For example, my editor sends out an SQL query to the database indicated in a configuration file, according to parameters established in the same configuration file, to verify the existence of a particular link target). The prevalence of Formal Public Identifiers would make the implementation of this kind of automatic validation possible; the functionality for checking specific target IDs once the target entity was identified is something that would need to be implemented on the database side.)
Supporting Files - Indexes, Navigation Bars, Annotations, etc:
Another powerful repercussion of having sufficient linking is that I can automatically render virtual documents made up of only links to support my primary document: indexes, TOCs, linked annotation files - all these could easily be generated. The capabilities of existing word-processors should at least be equalled, and in a fashion that is itself portable. (In a standard SGML format, perhaps? Again, Panorama Pro shows us how this kind of support can be implemented.)
|