| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Appendix G. 文件 | Fast Forward | Next |
SGML 和 DocBook 沒有受到過多的開放源碼寫作工具的影響。 最常用的工具集是帶有合適編輯模式的 Emacs/Xemacs 編輯器。 在一些系統上 這些工具在典型的完全安裝時是一併安裝的。
PSGML 是最常用和最強大的編輯 SGML 文件的工具。 如果正確的做了配置,它將允許您使用 Emacs 插入標籤和檢查標記一致性。 您也可以把它用於 HTML。看看 PSGML web 站點 獲取下載,安裝教學,以及詳細文件。
關於PSGML有一件比較重要的事情要注意: 它的作者假設您的主 SGML DTD 目錄是 /usr/local/lib/sgml。 如果您像本文的例子那樣放在 /usr/local/share/sgml, 您就得補償這個問題,要麼是設置 SGML_CATALOG_FILES 環境變量,要麼是客戶化您的 PSGML 安裝(它的手冊告訴您怎麼做)。
把下面這幾行放到您的 ~/.emacs 環境文件裡(根據您的系統調整路徑名):
; ********** 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)
))
目前,每個 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:
-->這些東西會給您設置一些編輯模式參數 — 即使您沒有設置您的 ~/.emacs 文件,不過有點糟糕的是, 因為您遵循的是上面的安裝步驟,那麼此目錄路徑將和您的位置不匹配。 因此您可能需要關閉本地變量:
(setq inhibit-local-variables t)
PostgreSQL 的發佈版包含一個已經分析好了的 DTD 定義文件 reference.ced。 當使用 PSGML 時,有一個讓自己在這些分離的文件上幹活方便些的辦法: 就是您在編輯它們的時候插入合適的 DOCTYPE 定義。 例如,如果您在這個源文件上幹活, 這是一個附錄章節,因此您將透過把第一行標記成象下面的樣子從而把這個文件聲明為一個 DocBook 文件的"附錄"(appendix):
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook V4.2//EN">
這意味著任何或所有讀取 SGML 的軟件將能正確讀取這份文件,並且我可以用 nsgmls -s docguide.sgml 檢驗此文件。 (不過您在製作整個文件集的時候要把這行拿走。)
GNU Emacs 帶有不同的 SGML 模式, 不過並不像 PSGML 那麼強大, 但是它比較少讓人混淆的東西而且比較小巧。同樣, 它也提供語法高亮(字體鎖),也是很有幫助的。
Norm Walsh 提供一個 用於 DocBook 的主模式,也有字體鎖和一些可以減少擊鍵的特性。