SGML 的目的是允许一个作者声明一份文档的结构和内容(例如,使用 DocBookDTD),并且由文档风格定义内容是如何呈现为最后的形式(例如,使用 Norm Walsh 的风格表(stylesheets)).
文档是从几个不同的源收集来的.在我们把现有文档整合组装成一个连贯的文档集时,原先的文档就过时了并且将被从版本中删除.但是,这些动作不会立即发生,并且不会对所有文档同时产生作用.为简化翻译工作,以及为了给开发人员和作者提供帮助,我们定义了翻译过程图.
SGML 和 DocBook 没有受到过多的开放源码写作工具的影响.最常用的工具集是带有 psgml 扩展特性的 emacs/xemacs 编辑包.在一些系统上(例如.RedHat Linux)这些工具在典型的完全安装时是一并安装的.
把下面这几行放到你的 ~/.emacs 环境文件里(根据你的系统调整路径名):
; ********** for SGML mode (psgml) (setq sgml-catalog-files "/usr/lib/sgml/CATALOG") (setq sgml-local-catalogs "/usr/lib/sgml/CATALOG") (autoload 'sgml-mode "psgml" "Major mode to edit SGML files." t )在同一个文件里增加一条记录,把 SGML 加入(现存的)自动模式别名的定义中(auto-mode-alist):
(setq auto-mode-alist '(("\\.sgml$" . sgml-mode) ))每个 SGML 源文件在末尾都有下面的块:
!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t sgml-parent-document:nil sgml-default-dtd-file:"./reference.ced" sgml-exposed-tags:nil sgml-local-catalogs:("/usr/lib/sgml/catalog") sgml-local-ecat-files:nil End: --Postgres 的发布版包含一个已经分析好了的 DTD 定义文件 reference.ced。你可以找到(译注:未完?)
当使用 emacs/psgml 时,有一个让自己在这些分离的文件上干活方便些的办法:就是你在编辑它们的时候插入合适的 DOCTYPE 定义.例如,如果你在这个源文件上干活,这是一个附录章节,因此你将通过把第一行标记成象下面的样子,从而把这个文档声明为一个 DocBook 文档的"附录"(appendix):
!doctype appendix PUBLIC "-//Davenport//DTD DocBook V3.0//EN"这意味着任何或所有读取 SGML 的软件将能正确读取这份文件,并且我可以用 "nsgmls -s docguide.sgml" 校验此文档.