to the main page... about these slides...

Content expressions

An element's content is viewed as a sequence of element nodes and character data nodes.

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 |
                  elementdescr
A 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.