This book approaches SGML from the vantage point of the software developer. It provides developers with all they need - both in terms of concepts - and software tools - to start developing SGML applications.
Many worked examples of SGML are provided using James Clarks NSGMLS parser. Applications are developed in a variety of tools including C++, Perl and Python. Every major feature of SGML is covered and particular emphasis has been placed on covering subtleties of the standard that can be troublesome to newcomers. In other words, the topics that caused my trouble when I first tackled them!
When I first approached SGML I climbed a steep hill in relating SGML concepts to concepts I already understood from a software development background. In this book I have attempted to flatten that hill for other software developers following the same path.
SGML (Standard Generalized Markup Language - ISO 8879) is an international standard for the electronic representation of the structure and content of documents.
This one-line definition, like most one line definitionns, may be sufficient to get the points in a quiz show but falls far short of a pragmatic explanation. It is on a par in terms of utility with such statements as "Unix is a mult-user operating system" or "An object-oriented programming language is a language that suppors inheritance.polymorphism and escapsulation."
SGML simply does not lend itself to succinct definition and any such definition would fail to do it justice. SGML has many facets ranging from the purely pragmatic through to the philosophical. It affects the working lives (and even the world view) of professionals ranging from authors to typesetters to software engineers to information theorists.
The purpose of this book is to concentrate on fleshing out this one-line definition of SGML for one particular group of peiple in the vast spectrum of those involved with it, namely software development community. Even having restricted the target audience to the software development community, it is still a gargantuan task to know where to begin, what to include and what to exclude. The principle reason for this is that SGML, like UNIX or Object Oriented Programming, is not so much a single idea as a collection of interconnected ideas. Moreover, many of the individual ideas are deveptively easy to state yet subtle and far-reaching in their implications.
Reading this book will take a finite amount of time. A well-rounded understanding of SGML, with all its subtleties and far-reaching implications, will follow some indeterminate amount of time later. IT will involve reading other books on the subject. It will certainly involve using it, playing with it, and thinking about how you can use it. Like most software tools, an ounce of practice is worth a ton of theory.
To draw an analogy with object-oriented programming, understanding what the terms inheritance, polymorphism and encapsulation mean is one with. It is quite another to begin to "think OO". So it is with SGML. Although ostensibly concerned exclusively with documents, SGML has implications for the way we think about computerized information of all forms. If you currently understand the terminology of SGML but have not used it in practice, we warned - the pennt, (indeed pennies) have yet to drop. When they do-when you begin to "think SGML"-your world view as a software developer will have changed, and the word document will take on a whole new meaning.