by Eric van der Vlist is published by O'Reilly & Associates (ISBN: 0596004214)


Name

interleave — interleave pattern

Synopsis

element interleave
{
 (
 attribute ns { text }?,
 attribute datatypeLibrary { xsd:anyURI }?,
 attribute * - (rng:* | local:*) { text }*
 ),
 (
 ( element * - rng:* { ... }* )
 & (
 element element { ... }
 | element attribute { ... }
 | element group { ... }
 | element interleave { ... }
 | element choice { ... }
 | element optional { ... }
 | element zeroOrMore { ... }
 | element oneOrMore { ... }
 | element list { ... }
 | element mixed { ... }
 | element ref { ... }
 | element parentRef { ... }
 | element empty { ... }
 | element text { ... }
 | element value { ... }
 | element data { ... }
 | element notAllowed { ... }
 | element externalRef { ... }
 | element grammar { ... }
 )+
 )
}

Class

pattern

May be included in

attribute, choice, define, element, except, group, interleave, list, mixed, oneOrMore, optional, start, zeroOrMore

Compact syntax equivalent

pattern&pattern

Description

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

interleave does more than define unordered groups, as you can see 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 allows these two combinations, but also element b1 followed by a followed by b2. It allows any combination in which the element a has been interleaved between elements b1 and b2.

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

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

Restrictions

  • The interleave pattern can't be used within a list.

  • Elements within a interleave pattern can't have overlapping name classes.

  • There can be at most one text pattern in each set of patterns combined by interleave.

Example

<element name="character">
  <interleave>
   <attribute name="id"/>
   <element name="name">
    <text/>
   </element>
   <element name="born">
    <text/>
   </element>
   <element name="qualification">
    <text/>
   </element>
  </interleave>
</element>
<element name="title">
 <interleave>
  <attribute name="xml:lang"/>
  <zeroOrMore>
   <element name="a">
    <attribute name="href"/>
     <text/>
    </element>
   </zeroOrMore>
  <text/>
 </interleave>
</element>

Attributes

datatypeLibrary

This attribute defines the default datatype library. The value is inherited.

ns

This attribute defines the default namespace for the elements defined in a portion of schema. The value is inherited.


This text is released under the Free Software Foundation GFDL.