A detailed description of the behavior of the element, if appropriate.

Note that attributes are fully defined only the first time they are used in
each module. After that, only a brief description of the attribute is
provided, along with a link back to the primary definition.

An abstract module is a definition of an XHTML module using prose text
and some informal markup conventions. While such a definition is not
generally useful in the machine processing of document types, it is
critical in helping people understand what is contained in a module.
This section defines the way in which XHTML abstract modules are
defined. An XHTML-conforming module is not required to
provide an abstract module definition. However, anyone developing an XHTML module
is encouraged to provide an abstraction to ease in the use of that
module.

The abstract modules are not defined in a formal grammar. However,
the definitions do adhere to the following syntactic conventions.
These conventions are similar to those of XML DTDs, and should be
familiar to XML DTD authors. Each discrete syntactic element can be
combined with others to make more complex expressions that conform to
the algebra defined here.

element name

When an element is included in a content model, its explicit name
will be listed.

content set

Some modules define lists of explicit element names called
content sets. When a content set is included
in a content model, its name will be listed. Content sets names
always begin with an uppercase letter.

expr ?

Zero or one instances of expr are permitted.

expr +

One or more instances of expr are required.

expr *

Zero or more instances of expr are permitted.

a , b

Expression a is required, followed by expression
b.

a | b

Either expression a or expression b is required.

a - b

Expression a is permitted, omitting elements in expression b.

parentheses

When an expression is contained within parentheses, evaluation of any
subexpressions within the parentheses take place before evaluation of
expressions outside of the parentheses (starting at the deepest level
of nesting first).

extending pre-defined elements

In some instances, a module adds attributes to an element. In these
instances, the element name is followed by an ampersand (&).

defining required attributes

When an element requires the definition of an attribute, that attribute
name is followed by an asterisk (*).

defining the type of attribute values

When a module defines the type of an attribute value, it does so
by listing the type in parentheses after the attribute name.

defining the legal values of attributes

When a module defines the legal values for an attribute, it does
so by listing the explicit legal values (enclosed in quotation marks), separated by vertical bars
(|), inside of parentheses following the attribute
name. If the attribute has a default value, that value is followed by an
asterisk (*). If the attribute has a fixed value, the attribute
name is followed by an equals sign (=) and the fixed value
enclosed in quotation marks.

Abstract module definitions
define minimal, atomic content models
for each module. These minimal content models reference the elements in the
module itself. They may also reference elements in other modules upon which
the abstract module depends. Finally, the content model in many cases requires
that text be permitted as content to one or more elements. In these cases, the
symbol used for text is PCDATA (parsed characted data). This is a term,
defined in the XML 1.0 Recommendation, that refers to processed character
data. A content type can also be defined as EMPTY,
meaning the element has no content in its minimal content model.

In some instances, it is necessary to define the types of attribute values or the explicit
set of permitted values for attributes.
The following attribute types (defined in the XML 1.0 Recommendation)
are used in the definitions of the abstract modules:

Attributes of this type identify the allowable content type(s) of an
associated URI (usually a value of another attribute on the same element).
At its most general, it is a comma-separated list of media ranges with optional accept parameters, as defined in section 14.1 of
[RFC2616] as the field value of the accept request header.

In its simplest case, this is just a media type, such as "image/png" or "application/xml", but it may also contain asterisks, such as "image/*" or "*/*", or lists of acceptable media types, such as "image/png, image/gif, image/jpeg".

The user agent must combine this list with its own list of acceptable media types by taking the
intersection, and then use the resulting list as the field value of the accept request header when
requesting the resource using HTTP.

For instance, if the attribute specifies the value "image/png, image/gif, image/jpeg", but the user agent does not accept images of type "image/gif" then the resultant accept header would contain "image/png, image/jpeg".

A user agent must imitate similar behavior when using other
methods than HTTP. For instance, when accessing files in a local filestore, <p src="logo" srctype="image/png, image/jpeg"> might cause the user agent first to look for a file logo.png, and then for logo.jpg.

If a value for the content type is not given, "*/*" must be used for its
value.

For the current list of registered content types, please consult [MIMETYPES].

Date and time information, as
defined by the type dateTime in [XMLSCHEMA] except that the timezone part is required.

HrefTarget

Name used as destination
for results of certain actions, with legal values as defined by
NMTOKEN.

LanguageCode

A language code.
The values should conform to [RFC3066] or its successors.

LanguageCodes

A comma-separated list
of language ranges with optional q parameters, as defined in section
14.4 of [RFC2616] as the field value of the Accept-Language
request header. Individual language codes should conform to [RFC3066] or its successors.

Length

Either a number, representing a number of pixels, or a percentage, representing a percentage of the
available horizontal or vertical space. Thus, the value "50%" means half of the available space.