Why Is It Called interleave?
If interleave
were only about defining unordered
groups, why would it be called interleave
and not
unorderedGroup
or something similar? The
interleave
pattern has hidden sophistication. It
isn’t only a definition for unordered groups,
it’s also a definition for unordered groups that let
their child nodes intermix within subgroups. Mixing is allowed even
when these groups are ordered groups. I promise this concept is
simpler than it looks in this semiformal definition. An example will
make it easier to grasp.
That ordered groups can be immersed in an unordered group might be
surprising. Let’s try a real-world metaphor to
illustrate it. Imagine that the elements of a XML document are like a
bunch of tourists visiting a museum; you can then define the
unordered sets as all the tourists visiting. The ordered groups of
tourists, who are within the unordered set, are following guides.
There are many ways to immerse ordered groups within the unordered
set of museum visitors and to mix ordered groups together. The
interleave
pattern describes one specific way to
effect this immersion: when the museum is an
interleave
pattern, the ordered groups preserve
only the relative order of their members. This not only allows
individual tourists to insert themselves within a group, but also
lets two groups interleave their members.
To return to XML and RELAX NG, let’s examine the following schema:
<element xmlns="http://relaxng.org/ns/structure/1.0" name="museum"> <interleave> ...
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.