+A record tag generally contains multiple ``field`` tags specifying the values
+set on the record's fields when creating it. Fields left out will be set to
+their default value unless required.
+
+``<field>``
+///////////
+
+In its most basic use, the ``field`` tag will set its body (as a string) as
+the value of the corresponding ``record``'s ``@name`` field.
+
+Extra attributes can either preprocess the body or replace its use entirely:
+
+``@name`` (mandatory)
+
+ Name of the field in the containing ``record``'s model
+
+``@type`` (optional)
+
+ One of ``char``, ``int``, ``float``, ``list``, ``tuple``, ``xml`` or
+ ``html``, ``file`` or ``base64``. Converts the ``field``'s body to the
+ specified type (or validates the body's content)
+
+ * ``xml`` will join multiple XML nodes under a single ``<data>`` root
+ * in ``xml`` and ``html``, external ids can be referenced using
+ ``%(id_name)s``
+ * ``list`` and ``tuple``'s element are specified using ``<value>``
+ sub-nodes with the same attributes as ``field``.
+ * ``file`` expects a module-local path and will save the path prefixed with
+ the current module's name, separated by a ``,`` (comma). For use with
+ :py:func:`~openerp.modules.module.get_module_resource`.
+ * ``base64`` expects binary data, encodes it to base64 and sets it. Mostly
+ useful with ``@file``
+
+``@file``
+
+ Can be used with types ``char`` and ``base64``, sources the field's content
+ from the specified file instead of the field's text body.
+
+``@model``
+
+ Model used for ``@search``'s search, or registry object put in context for
+ ``@eval``. Required if ``@search`` but optional if ``@eval``.
+
+``@eval`` (optional)
+
+ A Python expression evaluated to obtain the value to set on the record
+
+``@ref`` (optional)