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.