Next: Completion, Previous: Top, Up: Top [Contents]

## 1 Introduction

nXML mode is an Emacs major-mode for editing XML documents. It supports editing well-formed XML documents, and provides schema-sensitive editing using RELAX NG Compact Syntax. To get started, visit a file containing an XML document, and, if necessary, use `M-x nxml-mode` to switch to nXML mode. By default, `auto-mode-alist` and `magic-fallback-alist` put buffers in nXML mode if they have recognizable XML content or file extensions. You may wish to customize the settings, for example to recognize different file extensions.

Once in nXML mode, you can type `C-h m` for basic information on the mode.

The `etc/nxml` directory in the Emacs distribution contains some data files used by nXML mode, and includes two files (`test-valid.xml` and `test-invalid.xml`) that provide examples of valid and invalid XML documents.

To get validation and schema-sensitive editing, you need a RELAX NG Compact Syntax (RNC) schema for your document (see Locating a schema). The `etc/schema` directory includes some schemas for popular document types. See http://relaxng.org/ for more information on RELAX NG. You can use the ‘`Trang`’ program from http://www.thaiopensource.com/relaxng/trang.html to automatically create RNC schemas. This program can:

- infer an RNC schema from an instance document;
- convert a DTD to an RNC schema;
- convert a RELAX NG XML syntax schema to an RNC schema.

To convert a RELAX NG XML syntax (‘`.rng`’) schema to a RNC one, you can also use the XSLT stylesheet from https://github.com/oleg-pavliv/emacs/tree/master/xsl.

To convert a W3C XML Schema to an RNC schema, you need first to convert it to RELAX NG XML syntax using the RELAX NG converter tool `rngconv` (built on top of MSV). See https://github.com/kohsuke/msv and https://msv.dev.java.net/.

For historical discussions only, see the mailing list archives at http://groups.yahoo.com/group/emacs-nxml-mode/. Please make all new discussions on the ‘`help-gnu-emacs`’ and ‘`emacs-devel`’ mailing lists. Report any bugs with `M-x report-emacs-bug`.

Next: Completion, Previous: Top, Up: Top [Contents]