A content expression is a kind of regular expression on such sequences:
contentexp -> <Sequence> contentexp </Sequence> | <Optional> contentexp </Optional> | <ZeroOrMore> contentexp </ZeroOrMore> | <OneOrMore> contentexp </OneOrMore> | <Union> contentexp </Union> | <AnyElement/> | <Empty/> | <If> boolexp <Then> contentexp </Then> (<Else> contentexp </Else>)? </If> | stringtype | elementdescrA stringtype here probes the contents of a character data node.
An element descriptor probes the name of an element node and assigns an element ID to it:
elementdescr -> <Element IDRef="element ID"/>Evaluation is eager (e.g., ZeroOrMore consumes as much as possible).
Evaluating a stringtype expression or an element descriptor might insert defaults (- described later...).
Note: there is no intersection, complement, or setminus.