Recent versions of Emacs or XEmacs (available from the Ports Collection) contain a very useful package called PSGML (can be installed from editors/psgml). Automatically invoked when a file with the .xml extension is loaded, or by typing M-x sgml-mode, it is a major mode for dealing with SGML files, elements and attributes.
An understanding of some of the commands provided by this mode can make working with SGML documents such as the Handbook much easier.
Runs sgml-insert-element. You will 	 be prompted for
the name of the element to insert at the 	 current point. You can use the Tab key to 	 complete the element. Elements that are not valid at
the 	 current point will be disallowed.
The start and end tags for the element will be inserted. If the element contains other, mandatory, elements then these will be inserted as well.
Runs sgml-change-element-name. 	 Place the point
within an element and run this command. You 	 will be prompted for the name of the
element to change to. 	 Both the start and end tags of the current element will be
	 changed to the new element.
Runs sgml-tag-region. Select some 	 text (move to
start of text, C-space, 	 move to end of text, C-space) and then 	 run this command. You will be prompted for
the element to 	 use. This element will then be inserted immediately before 	 and
after your marked region.
Runs sgml-untag-element. Place the 	 point within
the start or end tag of an element you want to 	 remove, and run this command. The
element's start and end 	 tags will be removed.
Runs sgml-fill-element. Will 	 recursively fill
(i.e., reformat) content from the current 	 element in. The filling will affect 	 content in which
whitespace is significant, such as within 	 <programlisting> elements, so run this 	 command with
care.
Runs sgml-edit-attributes. Opens a 	 second buffer
containing a list of all the attributes for 	 the closest enclosing element, and
their current values. 	 Use Tab to navigate between attributes,
	 C-k to remove an existing value and 	 replace it with
a new one, C-c C-c to 	 close this buffer and return to the
main document.
Runs sgml-validate. Prompts you to 	 save the
current document (if necessary) and then runs an 	 SGML validator. The output from
the validator is captured 	 into a new buffer, and you can then navigate from one
	 troublespot to the next, fixing markup errors as you 	 go.
Runs sgml-insert-end-tag. Inserts 	 the end tag for
the current open element.
Doubtless there are other useful functions of this mode, but those are the ones I use most often.
You can also use the following entries in .emacs to set proper spacing, indentation, and column width for working with the Documentation Project.
    (defun local-sgml-mode-hook
      (setq fill-column 70
            indent-tabs-mode nil
            next-line-add-newlines nil
            standard-indent 4
            sgml-indent-data t)
      (auto-fill-mode t)
      (setq sgml-catalog-files '("/usr/local/share/xml/catalog")))
    (add-hook 'psgml-mode-hook
      '(lambda () (local-psgml-mode-hook)))