Name

pattern&pattern — interleave pattern

Synopsis

                     pattern (“&” 
pattern)+

Restrictions

pattern

May be included in

(pattern), attribute, datatypeName param exceptPattern, element, list, mixed, pattern&pattern, pattern*, pattern+, pattern,pattern, pattern?, pattern|pattern

XML syntax equivalent

interleave

Description

The interleave pattern “interleaves” subpatterns; it allows their leaves to be mixed in any relative order.

interleave is about more than defining unordered groups, as can be seen in the following example. Consider element a and the ordered group of element b1 and b2. An unordered group of these two patterns allows only element a followed by elements b1 and b2 or elements b1 and b2 followed by element a. An interleave of these two patterns does allow these two combinations but also element b1 followed by a followed by b2: a combination in which element a has been interleaved between elements b1 and b2.

The interleave behavior is the behavior applied to attribute patterns even when they are embedded in (ordered) group patterns. The reason for this is that XML 1.0 specifies that the relative order of attributes isn’t significant.

Another case where interleave patterns are often needed is to describe mixed-content models: content models where text is interleaved between elements. A shortcut (the mixed pattern) has been defined for this case.

Any number of patterns may be combined using the & operator when using this construct; however, different operators (,| &) can’t be mixed ...

Get RELAX NG now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.