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