Re: [relax-ng] Control of the combinations of patterns

From
James Clark <>
Date
2003-01-03T11:35:42+00:00
ID
002501c2b31b$de76c610$
Thread
Re: [relax-ng] Control of the combinations of patterns
> I allow grammars which will include this one to combine this definition
> by choice or interleave while if I write:
>
> foo = &bar
>
> I forbid combinations by choice and if I write
>
> foo = |bar
>
> I forbid combinations by interleave.

This doesn't seem very useful to me. If you forbid this, then I can instead
completely override the definitions instead of using combine.  In the
context of RELAX NG, this sort of thing is at most a hint to users that want
to customize a schema, and, as such, I think some conventional annotation
attributes would be enough: eg an annotation attribute on a define that says
whether is/is not intended to be combined with choice/interleave.

> Questions:
>  - would it be useful to be able to forbid both (similar to the notion
> of "final" definition)?
> - would it be usefull to impose that a combination is applied (notion of
> "abstract" definition)?

You can get something very similar to an abstract definition by using
notAllowed.  For example, in the original schema use:

a = notAllowed

Then in the overriding schema use:

a |= element ....


James