nxml-mode: Introduction

 
 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 (SeeLocating 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’.