← Prev in month ← Prev in thread

[relax-ng] Restriction on interleave

From
James Clark <>
Date
2001-10-19T06:19:34+00:00
ID
006601c15865$b1bae000$
Thread
[relax-ng] Restriction on interleave
Here's an attempt at a precise statement of the restriction on interleave
that deals with element, text and value.

First, we make list//interleave//data be a prohibited path.

Define the _alphabet_ of an pattern p to be

- the empty set if p is <attribute>

- { p } if p is <text>, <data>,  <value> or <element>

- the union of the alphabets of the children of p if p is <choice>,
<oneOrMore>, <group> or <interleave>

Define a pattern p1 to _compete_ with a pattern p2 iff

- p1 is <text> and p2 is <text>
- p2 is <element> and p2 is <element> and there is a name that belongs to
both the name class of p1 and the name class of p2
- p1 is <value> and p2 is <value> and
-- the type attributes of p1 and p2 are different, or
-- the datatypeLibrary attributes of p1 and p2 are different, or
-- the content of p1 is equal to the content of p2 wrt their common datatype

Then the restriction is as follows. If a pattern p1 is a member of the
alphabetof one child of an <interleave> pattern, and a pattern p2 is a
member of the alphabet of the other child of the <interleave> pattern, then
p1 and p2 must not compete.

James
← Prev in month ← Prev in thread