Content modules are described using nested tuples. Each tuple
contains four values: the type, the quantifier, the name, and a tuple
of children. Children are simply additional content module
descriptions.
The values of the first two fields are constants defined in the
model object of the xml.parsers.expat module. These
constants can be collected in two groups: the model type group and the
quantifier group.
The constants in the model type group are:
XML_CTYPE_ANY
The element named by the model name was declared to have a content
model of ANY.
XML_CTYPE_CHOICE
The named element allows a choice from a number of options; this is
used for content models such as (A | B | C).
XML_CTYPE_EMPTY
Elements which are declared to be EMPTY have this model type.
XML_CTYPE_MIXED
XML_CTYPE_NAME
XML_CTYPE_SEQ
Models which represent a series of models which follow one after the
other are indicated with this model type. This is used for models
such as (A, B, C).
The constants in the quantifier group are:
XML_CQUANT_NONE
No modifier is given, so it can appear exactly once, as for A.
XML_CQUANT_OPT
The model is optional: it can appear once or not at all, as for
A?.
XML_CQUANT_PLUS
The model must occur one or more times (like A+).
XML_CQUANT_REP
The model must occur zero or more times, as for A*.