Emacs 与 nXML 模式 nXML Emacs Emacs nXML 模式 您可以使用 Emacs 的 nXML 模式,使撰写 DocBook XML 格式更加简单。nXML 模式提供了上下文敏感的编辑模式,包括补全、实时的有效性检测、语法高亮和缩进。为此您只要安装一个 RPM 软件包! 开发早期 需要注意的是,Emacs 的 nXML 模式尚不完善,因此在编辑一些文档时,高级用户可能会注意到一些问题。如果您略微关注一下邮件列表,就可以获得相关信息,也可以问问题。请参考 下载 nXML RPM nXML RPM nXML RPM 要在 emacs 中使用 nXML 模式,您需要安装 Tim Waugh 网站上的 nXML RPM,或者下载 http://www.thaiopensource.com/download/ 的源代码。源代码需要花工夫来配置,因此这里只考虑 RPM 版本。 关于下载源代码请参考 范例 与 PSGML 模式相比,您只需有数几个命令。这样使用 Emacs 编辑就快捷多了,您可以更多地关注文章的内容。 命令 要创建一个标记,输入 < 然后输入关键字。要完成这个关键字,按下 Ctrl-Ret,然后添加随后的 >。要关闭一个标记,输入 </ 注意 当您打开不包含首部 DOCTYPE 声明的文件时,将看到如下信息,标记补全也无法实现,因为 nXML 不知道您在编辑的文件格式。 要加载 schema,按下 Ctrl-c,然后按 Ctrl-s 然后浏览 /usr/share/emacs/site-lisp/nxml-mode/schema/ 并加载 docbook.rncEmacs 将提示您将它保存到工作目录。 技巧 已描述过的命令只是 Emacs PSGML 模式与 Emacs nXML 模式的不同之处。您仍然需要使用 中描述的命令。 其他资源 其他的 Emacs 与 nXML 帮助可以在下列位置找到: http://www.thaiopensource.com/download/Author's download area http://wks.uts.ohio-state.edu/unix_course/intro-135.htmlEmacs Quick Reference Guide emacs 软件包附带了 Emacs 参考卡片。您可以打印一份,作为参考。— /usr/share/emacs/<version>/etc/refcard.ps nXML README 文件 注意 这个文件可以在您解压的源代码中找到,如果安装了 RPM,它的位置是 /usr/share/doc/nxml-mode-<version>/ README 文件: 这是 GNU Emacs 的一种新的主模式。它支持格式良好的 XML 文档,也为采用 RELAX NG Compact Syntax 的 XML 文档提供了 schema-sensitive 编辑模式。 要使用它,您需要 GNU Emacs 21.x 版本,推荐 21.3。GNU Emacs 20 版本中无法正常运作,XEmacs 也不行。要开始编辑,输入命令: M-x load-file RET rng-auto.el RET 这样定义了必需的 autoloads。然后,打开一个包含 XML 文档的文件,执行命令: M-x nxml-mode 然后执行 C-h m 来查看 nXML 模式的使用帮助。手册的起始页在 nxml-mode.info 中,可以这样阅读它: C-u M-x info RET nxml-mode.info RET 它也在顶层 info 目录最后添加了自己的一项,因此您可以和平常一样,用 C-h i 开始阅读。 您可以用 test.valid.xmltest.invalid.xml 作为正确和不正确的 XML 文档范例。 要在 Emacs 启动时自动加载这些,将下列内容加入您的 .emacs (load "~/nxml-mode-200YMMDD/rng-auto.el") 这里 ~/nxml-mode-200YMMDD 是包含 .elc 文件的目录。注意 rng-auto.el 不会加载所有 nXML 模式的代码;它仅仅设置环境,使得 nXML 模式的所有特性得以正确地自动加载。您不应尝试自动加载 rng-auto.el 本身。 要在加载扩展名是 xml, xsl, rngxhtml 的文件时自动切换到 nXML 模式,将下列内容加入您的 .emacs (setq auto-mode-alist (cons '("\\.\\(xml\\|xsl\\|rng\\|xhtml\\)\\'" . nxml-mode) auto-mode-alist)) 如果您编辑 iso-8859-N 编码的 XML,而不是 iso-8859-1,并且您运行的是 Emacs 21.3 或更新版本,那么最好打开 unify-8859-on-decoding-mode,将下列内容加入您的 .emacs (unify-8859-on-decoding-mode) 要使用验证以及 schema-sensitive 编辑模式,您需要文档的 RELAX NG Compact Syntax (RNC) schema 文件。schema 目录包含了常用文档类型的 schema。 关于 RELAX NG 请参考 http://relaxng.org/ 关于 RELAX NG Compact NG 的教程请参考 http://relaxng.org/compact-tutorial.html 关于自动创建 RNC schema,推荐使用 Trang 程序:http://eee.thaiopensource.com/relaxng/trang.html" 您可以使用它来 从已有文档得出 RNC schema将 DTD 转换为 RNC schema将 RELAX NG XML syntax schema 转换为 RNC schema 要将 RELAX NG XML syntax (.rng) schema 转换为 RNC schema,您也可以使用 http://www.pantor.com/download.html" 的 XSLT 样式表。 要将 W3C XML Schema 转换为 RNC schema,您需要首先将它转换为 RELAX NG XML syntax,使用 Sun 的 RELAX NG 转换工具 rngconv (基于 MSV)。请参考 https://www.dev.java.net/ 文件 NEWS 描述了最近的更改。 请访问邮件列表 http://groups.yahoo.com/group/emacs-nxml-mode 来提交 bug 和参与讨论。我将在那里发布新版本。 James Clark jjc@thaiopensource.com