SGML-Tools 使用说明中译版 作者: Matt Welsh. Updated by Greg Hankins. 译者: [1]C.W.Huang [2]cwhuang@phys.ntu.edu.tw v0.99.0, 29 November 1996. 翻译日期: 4-15 August 1997 _________________________________________________________________ 这份文件是 SGML-Tools 的使用说明,一种以 SGML 为基础,让你产生不同输出 格式的工具.你可以用单一的 SGML 原始文件产生纯文字档 (ASCII 与 ISO-8859-1), DVI, PostScript, HTML, GNU info, LyX, 与 RTF 档.这份文件 说明以 SGML-Tools 0.99.0. 为准. _________________________________________________________________ 1. 简介 * 1.1 关於此文件 * 1.2 为何用 SGML? * 1.3 它如何运作 2. 安装 * 2.1 安装软体 * 2.2 编排 SGML 文件 * 2.3 ISO 8859-1 字元集 3. 使用 SGML-Tools 撰写文件 * 3.1 基本概念 * 3.2 特殊字元 * 3.3 Verbatim 与 Code 环境 * 3.4 文件内容概观 * 3.5 交互参考 * 3.6 字型 * 3.7 列表 * 3.8 更进一步的资讯 _________________________________________________________________ 1. 简介 这是一份 SGML-Tools 文件处理系统的使用说明.SGML-Tools 提供一个 SGML DTD (文件形态定义,Document Type Definition) 及一组「置换 档(replacement files)」,可以将 SGML 转换为 groff, LaTeX, HTML, GNU info, LyX, 与 RTF 的原始档. SGML-Tools 主要以 [3]Tom Gordon 的 QWERTZ DTD 为基础发展的. 1.1 关於此文件 这份文件以附在 SGML-Tools 上的 linuxdoc DTD 所撰写的. 它几乎包含所有使 用这份 DTD 来写 SGML 文件所需知道的事情. 请参考 example.sgml 这份 SGML □例,你可以拿它当作你自己文件的□本. 1.2 为何用 SGML? 我选择使用 SGML 是因为 SGML 是专门用来转换成其它格式的. SGML 是 Standard Generalized Markup Language 的简称,它允许你指定文件的结构--- 也就是,用何种事物来标示文件. 你使用一份 DTD (文件形态定义) 来指定文件 的结构.linuxdoc 是一种指定 Linux HOWTOs 与其它文件的 DTD. QWERTZ 是另 一种 DTD; SGML 的标准提供书,文章,及其馀一般文件所使用的 DTD. DTD 指定文件中「组成元素」的名称.组成元素就是一种结构---例如章,节,段 落,或是更小的像是这样的 强调文字.然而跟 LaTeX 不同的是,这些组成元素 并非 SGML 本身内含的.linuxdoc DTD 就定义了类似 LaTeX 中的组成元素---你 有章,节,或是「环境」等等.然而,利用 SGML 你可以照你喜欢定义文件的任 何结构.就某方面来说,SGML 就像是低阶的 TeX,而 linuxdoc DTD 则像是 LaTeX. 别被这类比搞混了.SGML 并不是一种文件格式化系统.没有所谓的「SGML 格式 」. SGML 的原始档只是用来转换成其它格式以便处理的.还有,SGML 本身是用 来指定文件的结构. 没有 SGML 本身的文字格式化工具或是「巨集」之类的.所 有的一切都定义於 DTD 中. 没有 DTD 你不能使用 SGML,一份 DTD 定义了 SGML 该做什麽. 1.3 它如何运作 这里解释如何使用 SGML-Tools 处理文件.首先,你需要一份 DTD.我用的是 QWERTZ DTD, 它本来是一群人因为需要类似 LaTeX 的 DTD 而做的.我将 QWERTZ DTD 修改成 linuxdoc DTD 以符合我们的需求.DTD 不过设定了文件的结 构.它看起来像是这个样子的: 这部份设定了「文件」的整个结构,就像是 LaTeX 的「documentstyle」. 这文 件包含了一个书页名(titlepag),一个可有可无的标题(header),一个可选用的 内容列表(toc),可选用的图形列表(lof)与表格列表(lot),任意数量的段落(p) ,任意数量的章节(sect),可选用的附录(appendix),一个可选用的参考书 目(biblio)以及注解(footnote). 你可看出,DTD 并未说明文件应如何被格式化,或它看起来长得怎麽样. 它只不 过定义了文件由何种部份所组成.在文件的另一个地方定义了 titlepag, header, sect 及其馀的组成元素. 写文件时你并不需要知道任何关於 DTD 的文法规则.我只不过让你看一下它长得 什麽样子还有它做了什麽. 但你必需熟悉这份 DTD 所定义的文件结构.否则, 在尝试写文件时你可能会违反结构, 而且被错误讯息搞昏了.下面我们会描述 SGML 文件结构的细节. 接下来就是用这份 DTD 所定义的结构来写文件了.再说一次,linuxdoc DTD 使 得文件看起来长得像 LaTeX---所以很容易遵从.用 SGML 的术语来说,使用某一 个特别的 DTD 来撰写的单一文件叫做那份 DTD 的「案例(instance)」. 为了将 SGML 原始档转换成其它格式(例如 LaTex 或 groff)以便处理,你所写的 SGML 原始档必须经 SGML 解析器处理过.我用的是 James Clark( [4]jjc@jclark.com) 所写的 sgmls 解析器, 他也是 groff 的作者.它用起来很 方便.sgmls 读入你的文件,检查它遵循 DTD 所定义的结构. 它同时将你文件 中的「巨集」和元素展开,以方便下一阶段的 sgmlsasp 来处理. sgmlsasp 用来将 sgmls 的输出结果转换成另一种格式(如 LaTeX). 它使用置换 档将原始 SGML 文件中的组成元素转换成「目标」格式(如 LaTeX 或 groff)对应 的原始档. 例如,一部份 LaTeX 的置换档长得像这样: + "\\begin{itemize} + + "\\end{itemize} + 它说明了当你在 SGML 原始档中使用 itemize 元素时,应该被置换成 LaTeX 原 始档中的 \begin{itemize} (我说过了,DTD 中的元素像极了它们在 LaTeX 中的对应物.) 因此,要将 SGML 转换成其它格式,你所要做的就是为此格式写一个新的置换档 , 在新格式中为每一 SGML 组成元素指定适当的对应.事实上,没这麽简单--- 例如, 如果你尝试转换成和你的 DTD 完全不同的结构,你就有麻烦.不过, 比 起要为每一种格式写单独的解析器与转换程式还是要简单的多. SGML 提供一种 一般的系统将一种原始档转换成许多格式. 一但 sgmlsasp 转换完成,你就有与原先 SGML 原始文件相对应的 LaTeX 原始档 , 你可以像一般的 LaTeX 档一样来使用它.下面我会示□如何做这样的转换与 格式化. 你只要用一行指令就够了. 不过首先,我要说明如何安装及设定 SGML-Tools. 2. 安装 首先从这个地方 * [5]ftp://sunsite.unc.edu/pub/Linux/utils/text/sgml-tools-0.99.0.ta r.gz 取得 sgml-tools-0.99.9.tar.gz. 你可以从 [6]SGML-Tools WWW Page 取得最新的资讯. sgml-tools-0.99.0.tar.gz 包含了所有你需要用来写 SGML 文件并转换为 groff, LaTeX, HTML, GNU info, LyX, 与 RTF 的东西.除此之外,你可能还需 要下列的工具---SGML 系统并不需要这些,但我建议你取得这些工具以方便你转 换文件,在你公开散布你的文件前将先确定它们看起来没问题. 1. groff. 你必须使用 1.08 或更新的版本.你可以从 [7]ftp://prep.ai.mit.edu/pub/gnu 取得.在 [8]ftp://sunsite.unc.edu/pub/Linux/utils/text 可找到 Linux 的执行档 .你必需使用 groff 让你的 SGML 文件产生纯文字档. nroff 不行! 2. TeX 与 LaTeX. 这几乎在每个地方都有,你应该可以毫无困难地找到并安装 (在 [9]sunsite.unc.edu 可以找到 Linux 的执行档) 当然,如果你要用 LaTeX 来格式化你的 SGML 文件你才需要 TeX/LaTeX. 3. flex. lex 可能不行.你可以从 [10]ftp://prep.ai.mit.edu/pub/gnu 取得 . 4. gawk 与 GNU info tools, 用来格式化与预视 info 档案. 在 [11]ftp://prep.ai.mit.edu/pub/gnu, 或 [12]ftp://sunsite.unc.edu/pub/Linux/utils/text 可以找到 gawk, 还有 [13]ftp://sunsite.unc.edu/pub/Linux/system/Manual-pagers 可找到 GNU info tools. awk 不行. 5. LyX (一个半所见即所得(quasi-WYSIWYG) 的 LaTeX 界面),可在 [14]ftp://ftp.via.ecp.fr 找到. 2.1 安装软体 安装与设定 SGML-Tools 所需的步骤是: 1. 首先,在某处解开 sgml-tools-0.99.0.tar.gz 的压缩档. 它将产生 sgml-tools-0.99.0 的目录.在那里解开都没有关系,只是不要把里面的东 西搬离 sgml-tools-0.99.0 目录就行. 2. 阅读 INSTALL 档,它包含了安装过程的细节. 如果一切顺利,你就可以使用它了. 译注: 其实就是执行 install 这支 shell script,回答它的问题就行了! 2.2 编排 SGML 文件 例如说你想要编排一份 SGML 文件叫 foo.sgml,这里有一份简短的说明如何输出 成不同的格式.完整的选项列表请参考 man pages. 产生纯文字输出 如果你想产生纯文字档,使用这个指令: % sgml2txt foo.sgml 请注意我已调整 groff 转换为纯文字输出.也就是说,我将页首,页码,边框等 去掉. 经过一些修改你可以从 groff 的输出产生 PostScript 与 DVI 格式,但 我建议你用 LaTeX 比较好. 你可以为 man pages 产生 groff 的原始档,而用 groff -man 将其编排. 执行 这个指令: % sgml2txt -man foo.sgml 产生 LaTeX, DVI 或 PostScript 输出 要从 SGML 原始档产生 LaTeX 文件,就用: % sgml2latex foo.sgml 如果你希望产生 PostScript 输出(经由 dvips),可用 -p 选项: % sgml2latex -p foo.sgml 或者你可以加上 -d 选项产生 DVI 档: % sgml2latex -d foo.sgml 产生 HTML 输出 如果你希望输出 HTML 档,用这指令: % sgml2html -img foo.sgml 这将产生 foo.html, foo-1.html, foo-2.html, 等等 --- 每一章一个档案 .foo.html 是首页,可以用你的 WWW 浏□器观看. 确定你所有的 HTML 档在同 一目录下,因为它们是用相对的 URL 彼此参考的. HTML 档的图示目录指向 $SGMLTOOLSLIB/icons 所定义的目录. 这些档都应被拷贝到最後的位置上 .$SGMLTOOLSLIB/ 定义在 SGML 转换程序的最开头. 如果你使用 sgml2html 而没有加上 -img 选项的话,产生的 HTML 文件会加上导 读用的 "Previous", "Next", 以及 "Table of Contents" 标签. 你可以藉由在 $SGMLTOOLSLIB/rep/html/ 建立一个档案以盖过这些预设, 并且以你 自己的话来取代它们.该档案的格式如下所示: he following format: PrevPage: newvalue NextPage: newvalue TOC: newvalue □例请参阅 deutsch. 产生 GNU Info 格式的输出 如果你想要将你的档案编排成 GNU Info 浏览程式接受的格式,只要使用下列指 令: % sgml2info foo.sgml 产生 LyX 格式的输出 欲产生 LyX 格式的出,使用这个指令: % sgml2lyx foo.sgml 产生 RTF 格式的输出 如果你想产生 RTF 格式的输出,执行这个指令: % sgml2rtf foo.sgml 这将会产生 foo.rtf, 以及 foo-1.rtf, foo-2.rtf, 等等档案---文件的每一节 自成一个档案. 检查 SGML 语法 如果你只是想从 SGML 转换中抓出你的错误,可以使用 sgmlcheck 这个指令稿. 例如: % sgmlcheck foo.sgml 2.3 ISO 8859-1 字元集 ISO 8859-1 (latin1) 字元集可以用在纯文字 LaTeX, HTML, LyX, 以及 RTF 输 出的国际字元(GNU Info 未来可能支援 ISO 8859-1). 要使用这项功能的话,可 以加上 -l 选项给编排指令稿,例如: % sgml2txt -l foo.sgml 你也可以在 SGML 原始文件中使用 ISO 8859-1 字元,它们会自动被转换成对应 文件格式的适当逸出字元(escape codes). 3. 使用 SGML-Tools 撰写文件 使用 SGML-Tools DTD 撰写文件的过程大部分是非常容易的,而且有点类似 LaTeX. 然而,仍然有些限制要注意.这一节我将介绍 SGML 文件的撰写. SGML 文件□例(及写作指引)请参阅 example.sgml 档案,你可以拿来当作自己文 件的□本. 在此我将讨论 SGML 的各项功能,但是以原始文件作为□例不是很有 可读性. 因此,印出 example.sgml 的原始码(编排後的输出),如此你就有真实 的参考□例。 3.1 基本概念 仔细看□例文件的原始文件,你会注意到里面有许多以角括号(< 及 >)标示的「 标签(tags)」. 标签单纯地指出某组成元素的起始,这里所谓的组成元素是一节 ,一段,一句斜体的文句,列表中的一个项目,以及诸如此类的结构. 使用标签 就像使用 LaTeX 指令如 \item 或是 \section{...} 等一般. 举个简单的例子,要产生这一段 粗体文字,我在原始码中键入 举个简单的例子,要产生这一段 粗体文字, ... 是这段粗体文字的开头,而 是结尾. 你也可以使用这个简略形式: 举个简单的例子,要产生这一段 这个标签,然而,该节的结尾标签 (可以出现在该节主体本身结 束的地方,而不只是该节的名称後面!) 是可选用的而当你在同一个层次开始另外 一节的时候也就暗示著该节的结束. 一般来说你不需要担心这些细节;只要跟著 使用在 example.sgml 指引里的□例就可以了。 3.2 特殊字元 很明显的,角括号它们本身就是 SGML 原始文件里的特殊字元.另外还有其它该 注意的字元. 例如,假设你想键入由角括号所涵盖的表示式,像这样: . 为了表示左边的角括号,你必须使用 < 这个组成元素, 这是一个会展开成左 括号字元的「巨集」.因此,我在原始文件中键入 angle brackets around it, as so: <foo>. 一般来说,以结合字元(&)作为开始表示这是一个特殊的巨集. 例如,产生 % 符 号的 % 产生 | 的 | 等等. 对於所有的「特殊字元」都有结合 巨集可以表示它们. 通常,你不需要使用结合巨集表示某特殊字元,然而,在某些情况下这是必须的 。最常用的是: * Use & for the ampersand (&), * Use < for a left bracket (<), * Use > for a right bracket (>), * Use </ for a left bracket with a slash ( Some literal text to include as example output. verb 环境不允许你在其内容中使用任何东西. 特别地,在 verb 环境中你必须 : * 使用 & 代表 & * 使用 </ 代表 这是一段例句. tscreen 是一个环境单纯地缩排并设定预设字型为 tt. 这使得□例要论在 LaTeX 以及纯文字的版本中看起来好多了. 你可以使用 tscreen 而不加 verb, 不过,如果你在□例中使用任何的特殊字元那麽你就需要它们两个. tscreen 与 特殊字元无关.□例请参阅 example.sgml. quote 环境类似 tscreen,除了不将预设字型设为 tt.所以,你可以使用 quote 於与电脑无关的引用,如: Here is some text to be indented, as in a quote. 这会产生: Here is some text to be indented, as in a quote. 3.4 文件内容概观 在我们深入研究细节之前,我要开始介绍 linuxdoc DTD 定义的文件概观.文件 如何设立的□例请仔细观看 example.sgml. 序文 在文件的「序文」中你设立像是标题以及文件型态(style)的东西.Linux HOWTO 文件看起来应该像:
Linux Foo HOWTO <author>阿伟, <tt/cwhuang@phys.ntu.edu.tw/ <date>v1.0, 14 August 1997 <abstract> 这份文件说明了如何使用 <tt/foo/ 这个工具. </abstract> <toc> 这些组成项目可以酌予增减但须按此顺序.第一行告诉 SGML 解析程式使用 linuxdoc DTD. <article> 这个标签规定文件使用「article」此种文件型态. (原先的 QWERTZ DTD 还定义 「report」以及「book」等型态;我并没有修改它 们以在 SGML-Tools 中使用). title, author, 以及 date 这些标签的意义应该是很明显的, 在 date 标签中 包含文件的版本编号以及最後修改时间. abstract 标签设定文件顶端在内容之前印出的文字. 如果你不想含入内容列 表(toc 标签),那麽你可能不需要 abstract. 章节与段落 在序文之後,你就可以准备进入文件本身.有下列的分节指令可以使用: * sect: 最顶层的章节 (也就是 1, 2, 等等) * sect1: 第二层的次章节 (也就是 1.1, 1.2, 等等) * sect2: 第三层的小章节 * sect3: 第四层的小小节 * sect4: 第五层的小小小节 它们相当於 LaTeX 中对应的 section, subsection 等等. 在 sect (或 sect, sect 等等) 标签之後跟著是该节的名称. 例如,在文件的 顶端,序文之後的是此标签: <sect>简介 而在此节开始的地方(段落),有个标签是: <sect2>段落 在一节的标签之後,你开始文件的主体.然而,你必须以一个 <p> 标签开始,像 这样: <sect>简介 <p> 这是一份 SGML-Tools 文件处理的使用者指引.... 这是告诉解析程式你已完成一节的标题并且准备好开始本文主体. 其後,新的段 落是以空白行开始(就如同 TeX).例如, 这是第一段的结尾. 而我们从这里开始新的一段. 没有什麽理由要在每个段落的前面使用 <p> 标签;只要在分节指令後面的第一个 段落开始处加就行. 文件结尾 在文件结束的地方,你必须使用这个标签: </article> 以告诉解析程式你已经完成 article 这个组成元素(涵盖整份文件). 3.5 交互参考 现在我们要进入系统的其它功能.交互参考很容易.例如,如果你想要制作某一 节的交互参考,你得像这样标示该节: <sect1>简介<label id="sec-intro"> 接著你就可以在文件中的某个地方式用这个表示式参照该节: 请参考<ref id="sec-intro" name="简介">一节的介绍. 这将会以 sec-intro 标记的节号替换掉这个 ref 标签. 对於 groff 以及 HTML 转换 name 这个参数是必须的. SGML-Tools 使用的 groff 巨集设定目前 并未支援交互参考,而且它常常以名称取代数字参照某一节. 例如,本节是 [15]交互参考. 在全球资讯网上使用的通用资源定位器,即 URL 也有组成元素 url. 这个元素 应该用来参照其它文件,FTP 上的档案等等.例如: 你可从此取得 Linux HOWTO 文件 <url url="http://sunsite.unc.edu/mdw/HOWTO/" name="The Linux HOWTO INDEX">. url 这个参数指定这个 URL 本身.连结会自动加入到 HTML 文件中. 可选用的 name 参数指定应该加上连结的文字(HTML 转换)或是为 URL 描述命名(LaTeX 或 groff).如果没有给 name 参数,会使用这个 URL 本身. 例如,你可以从这里取得 SGML-Tools 套件 [16]ftp://sunsite.unc.edu/pub/Linux/utils/text/sgml-tools-0.99.0.tar.g z. 一个有用的变形是 htmlurl,除了 HTML 文件在其它每种文件中这个 URL 部份将 不会出现. 它用在像是个人的电子邮件位址;你可以写 <htmlurl url="mailto:esr@snark.thyrsus.com" name="esr@snark.thyrsus.com"> 而在纯文字输出中获得「esr@snark.thyrsus.com」 而不是重复的 「esr@snark.thyrsus.com <mailto:esr@snark.thyrsus.com>」 但是在 HTML 文 件中仍然保有适当的 URL 部份. 3.6 字型 基本上,SGML-Tools 支援与 LaTeX 相同的字型. 注意,无论如何,纯文字的转 换(经由 groff)不理会有关字型的资讯. 所以,你可以尽可能的使用多种字型, 这对 LaTeX 的转换会有好处. 但是在纯文字的版本中不要指望能用字型点出重 点. 特别是,前面描述过的 tt 这个标签可以用来获致宽度固定的「打字机」字型, 这应该用在所有的电子邮递位址,机器名称,档案名称等等. 例如: Here is some <tt>typewriter text</tt> to be included in the document. 相当於: Here is some <tt/typewriter text/ to be included in the document. 记得如果被包含的文字不含有斜线你可以使用简略形式. 其它的字型有 粗体字 用的 bf 以及 斜体字 用的 em. 另外还支援数种字型, 但是我不建议你使用它们,因为它们会被转换成像 HTML 不支援的字型. 粗体, 打字机体,以及斜体应该能满足你的需要. 3.7 列表 此系统支援数种不同的列表.它们是: * itemize 像这样的告示列表 * enum 数字列表 * descrip 描述列表 在 itemize 或是 enum 里的项目必须以 item 标签加以标示. 在 descrip 里的 项目必须以 tag 标示. 例如, <itemize> <item>这是一个项目. <item>这是第二个项目. </itemize> 看起来像是这样: * 这是一个项目. * 这是第二个项目. 在 enum 中 <enum> <item>这是第一个项目. <item>这是第二个项目. </enum> 你应看得出来,列表可以是巢状的.细节请参阅□例文件. descrip 列表稍有不同,而且有点难看,但是在某些情况下你可能会想使用它: <descrip> <tag/Gnats./ Annoying little bugs that fly into your cooling fan. <tag/Gnus./ Annoying little bugs that run on your CPU. </descrip> 最後看起来像: Gnats. Annoying little bugs that fly into your cooling fan. Gnus. Annoying little bugs that run on your CPU. 3.8 更进一步的资讯 1. QWERTZ 使用者指引可以从这里取得 [17]ftp://ftp.cs.cornell.edu/pub/mdw/SGML. QWERTZ (以及 SGML-Tools) 还支援像是数学公式,表格,图形等许多特性. 如果你想用 SGML 写一般的文件,我建议你用原来的 QWERTZ DTD 而不要用修改过的 linuxdoc DTD, 因为这是我特别用来写 Linux HOWTOs 及其它类似文件用的 . 2. Tom Gordon 的 QWERTZ tools 可在此找到: [18]ftp://ftp.gmd.de/GMD/sgml. 3. 更多关於 SGML 的资讯可以在下面这些网页找到: + [19]SGML and the Web + [20]SGML Web Page + [21]Yahoo's SGML Page 4. James Clark 的 sgmls 解析器,及後来的 nsgmls 还有其它工具可在这找到 : [22]ftp://ftp.jclark.com 以及 [23]James Clark's WWW Page. 5. emacs psgml 可在此找到: [24]ftp://ftp.lysator.liu.se/pub/sgml.这 个工具提供许多 SGML 的功能. 6. 你可以寄电子邮件到 [25]majordomo@via.ecp.fr 以参与 SGML-Tools mailing list,内容写 subscribe sgml-tools. Mailing list 的地址是 [26]sgml-tools@via.ecp.fr. 7. 关於 LyX 的更多资讯可以在此找到: [27]LyX WWW Page. LyX 是一个给 LaTeX 用的高阶文字处理器前端. 具半所见即所得界面,会自动产生许多 LaTeX 的样式及格局. 可以增快 LaTeX 的学习而且使复杂的格局变简单且 直接. References 1. http://www.phys.ntu.edu.tw/~cwhuang/pub/ 2. mailto:cwhuang@phys.ntu.edu.tw 3. mailto:thomas.gordon@gmd.de 4. mailto:jjc@jclark.com 5. ftp://sunsite.unc.edu/pub/Linux/utils/text/sgml-tools-0.99.0.tar.gz 6. http://www.xs4all.nl/~cg/sgmltools/ 7. ftp://prep.ai.mit.edu/pub/gnu 8. ftp://sunsite.unc.edu/pub/Linux/utils/text 9. ftp://sunsite.unc.edu/ 10. ftp://prep.ai.mit.edu/pub/gnu 11. ftp://prep.ai.mit.edu/pub/gnu 12. ftp://sunsite.unc.edu/pub/Linux/utils/text 13. ftp://sunsite.unc.edu/pub/Linux/system/Manual-pagers 14. ftp://ftp.via.ecp.fr/ 15. file://localhost/tmp/zh-sgmltools.7880/SGML-Guide.txt.html#cross-ref 16. ftp://sunsite.unc.edu/pub/Linux/utils/text/sgml-tools-0.99.0.tar.gz 17. ftp://ftp.cs.cornell.edu/pub/mdw/SGML 18. ftp://ftp.gmd.de/GMD/sgml 19. http://www.w3.org/hypertext/WWW/MarkUp/SGML/ 20. http://www.sil.org/sgml/sgml.html 21. http://www.yahoo.com/Computers_and_Internet/Information_and_Documentation/Data_Formats/SGML/ 22. ftp://ftp.jclark.com/ 23. http://www.jclark.com/ 24. ftp://ftp.lysator.liu.se/pub/sgml 25. mailto:majordomo@via.ecp.fr 26. mailto:sgml-tools@via.ecp.fr 27. http://wsiserv.informatik.uni-tuebingen.de/~ettrich/