8.5.4 Content Model Descriptions

##
8.5.4 Content Model Descriptions

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*`.