Re: Deterministic Content Models ?

Liam R. E. Quin (liamquin@interlog.com)
Sat, 12 Sep 1998 00:31:46 -0400 (EDT)


On Fri, 11 Sep 1998, Philippe Le H=E9garet wrote:

> Is (paragraph*)* a determinist content model ?
> If yes, so I think (a+ | b)* is a deterministic content model too.

Yes, they both are.

The constraint in section 3.3.1 of the XML spec is
it is an error if an element in the document can match more
than one occurrence of an element type in the content model.

Hence, a content model can only be non-deterministic in the XML sense
if it has a name that repeats. For example,
(a*, a*)
is non-deterministic, because the input <a> could match either "a*" in
the content model. In the same way,
(a+, b?, a+)
is bad because <a><a> could match the first "a+" or the first a+,
a missing b between the two elements, and the second <a/> could match
the second a+ in the content model.

Non-terminals are not an issue, so in your example of
(paragraph*)*
although either * could be matched, * is not an element, so this is
still deterministic.

It's generally easier to ignore this error than it is to check it.

I hope this helps.

Lee

--=20
Liam Quin, GroveWare Inc., Toronto; The barefoot agitator
l i a m q u i n at i n t e r l o g dot c o m