Next: , Previous: TeX Mode, Up: Text


29.10 SGML, XML, and HTML Modes

The major modes for SGML, XML, and HTML provide indentation support and commands for operating on tags. XML mode is actually identical to SGML mode (to be precise, xml-mode is an alias for sgml-mode), because XML is a strict subset of SGML. HTML mode is a slightly customized variant of SGML mode.

In XML, every opening tag must have an explicit closing tag. When the variable sgml-xml-mode is non-nil, the tag insertion commands described below always insert explicit closing tags as well. When you visit a file, Emacs determines whether it is XML by examining the file contents, and sets sgml-xml-mode accordingly.

C-c C-n
Interactively specify a special character and insert the SGML ‘&’-command for that character.
C-c C-t
Interactively specify a tag and its attributes (sgml-tag). This command asks you for a tag name and for the attribute values, then inserts both the opening tag and the closing tag, leaving point between them.

With a prefix argument n, the command puts the tag around the n words already present in the buffer after point. Whenever a region is active, it puts the tag around the region (when Transient Mark mode is off, it does this when a numeric argument of −1 is supplied.)

C-c C-a
Interactively insert attribute values for the current tag (sgml-attributes).
C-c C-f
Skip across a balanced tag group (which extends from an opening tag through its corresponding closing tag) (sgml-skip-tag-forward). A numeric argument acts as a repeat count.
C-c C-b
Skip backward across a balanced tag group (which extends from an opening tag through its corresponding closing tag) (sgml-skip-tag-forward). A numeric argument acts as a repeat count.
C-c C-d
Delete the tag at or after point, and delete the matching tag too (sgml-delete-tag). If the tag at or after point is an opening tag, delete the closing tag too; if it is a closing tag, delete the opening tag too.
C-c ? tag <RET>
Display a description of the meaning of tag tag (sgml-tag-help). If the argument tag is empty, describe the tag at point.
C-c /
Insert a close tag for the innermost unterminated tag (sgml-close-tag). If called from within a tag or a comment, close this element instead of inserting a close tag.
C-c 8
Toggle a minor mode in which Latin-1 characters insert the corresponding SGML commands that stand for them, instead of the characters themselves (sgml-name-8bit-mode).
C-c C-v
Run a shell command (which you must specify) to validate the current buffer as SGML (sgml-validate).
C-c TAB
Toggle the visibility of existing tags in the buffer. This can be used as a cheap preview.

Emacs also provides a more advanced mode for editing XML documents, called nXML mode (nxml-mode). nXML mode is aware of many existing XML schema, and uses them to provide completion of XML elements via C-<RET> or M-<TAB>, as well as “on-the-fly” validation of XML, with errors highlighted via Font Lock (see Font Lock). It is described in its own manual. See nXML Mode.