?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
SGML 和 DocBook 沒(méi)有受到過(guò)多的開(kāi)放源碼寫(xiě)作工具的影響。最常用的工具集是帶有合適 編輯模式的 Emacs/XEmacs 編輯器。在一些系統(tǒng)上這些工具在典型的完全安裝時(shí)是一并安裝的。
PSGML 是最常用和最強(qiáng)大的編輯 SGML 文檔的工具。如果正確的做了配置, 它將允許你使用 Emacs 插入標(biāo)簽 和檢查標(biāo)記一致性。你也可以把它用于HTML。 查看 PSGML 網(wǎng)站下載、安裝指導(dǎo)、詳細(xì)文檔。
關(guān)于 PSGML 有一件比較重要的事情要注意: 它的作者假設(shè)你的主 SGML DTD 目錄是 /usr/local/lib/sgml 。如果你像本文的 例子那樣放在 /usr/local/share/sgml , 就得補(bǔ)償這個(gè)問(wèn)題,要么是設(shè)置 SGML_CATALOG_FILES 環(huán)境變量,要么是自定義你的 PSGML 安裝(它的手冊(cè)告訴你怎么做)。
把下面這幾行放到你的 ~/.emacs 環(huán)境文件里(根據(jù)你的系統(tǒng)調(diào)整路徑名):
; ********** for SGML mode (psgml) (setq sgml-omittag t) (setq sgml-shorttag t) (setq sgml-minimize-attributes nil) (setq sgml-always-quote-attributes t) (setq sgml-indent-step 1) (setq sgml-indent-data t) (setq sgml-parent-document nil) (setq sgml-default-dtd-file "./reference.ced") (setq sgml-exposed-tags nil) (setq sgml-catalog-files '("/usr/local/share/sgml/catalog")) (setq sgml-ecat-files nil) (autoload 'sgml-mode "psgml" "Major mode to edit SGML files." t )
并且在同一個(gè)文件里增加一條SGML的記錄, 到auto-mode-alist的定義:
(setq auto-mode-alist '(("\\.sgml$" . sgml-mode) ))
PostgreSQL 的發(fā)布版包含一個(gè)已經(jīng)分析好了 的 DTD 定義文件 reference.ced 。你可能發(fā)現(xiàn)當(dāng)使用 PSGML 時(shí),有一個(gè)讓自己在這些分離的 文件上工作方便些的辦法:就是你在編輯它們的時(shí)候插入合適的 DOCTYPE 定義。例如,如果你在這個(gè)源文件上工作, 例如,這是一個(gè)附錄章節(jié),因此你將通過(guò)把第一行標(biāo)記成像下面的樣子從而 把這個(gè)文檔聲明為一個(gè) DocBook 文檔的"appendix":
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook V4.2//EN">
這意味著任何或所有讀取 SGML 的軟件將能正確 讀取這份文件,并且我可以用 nsgmls -s docguide.sgml 校驗(yàn)此文檔(不過(guò)你在制作整個(gè)文檔集的時(shí)候要把這行拿走)。
GNU Emacs 帶有不同的 SGML 模式,不過(guò)并不像 PSGML 那么強(qiáng)大,但是它 比較少讓人混淆的東西而且比較小巧。同樣,它也提供語(yǔ)法高亮(字體鎖), 也是很有幫助的。
Norm Walsh 提供 一個(gè) 專門用于 DocBook 的 major mode ,也有字體鎖和一些可以減少擊鍵的特性。