> It seems to me that there are many different levels of type-assignment.
Yes, indeed.
> The first, easier level would be just determine declarations for
> elements, attributes, and possibly for texts. This can be done easily
> and useful for things like schema-guided editor or XQuery.
I think that many applications require this level. In fact, Jonathan
requires this level.
> For it to be useful for data-binding tools, I think what we need is
> "start-end detection" (for lack of better word) where the receiver would
> like to know when a new primitive starts and when it ends.
snip
> This is pretty much what RelaxNGCC does internally (so as JAXB RI), and
> I believe the algorithm is the same for Relaxer as well.
Agreed. RelaxNGCC and Relaxer need to know which subpattern matches which
subsequence (i.e., start-end) of element or attribute. Although they
impose different restrictions on RELAX NG grammars and use different algorithms for
type-assignment, they both perform "start-end detection".
However, we cannot perform such "start-end detection" if we normalize schemas
as specified in the RELAX NG spec. In my understanding, neither Relaxer nor
RelaxNGCC perform such normalization.
If our type-assignment spec has to provide "start-end detection", we will probably
have to define semantics of RELAX NG schemas without performing normalization.
I think that this is too difficult. Rather, I think that "start-end detection"
should be built by implementors of data binding tools.
In my understanding of Jonathan's message, XQuery does not require "start-end
detection". I thus propose to omit two of the requirements in my
message [1]
>
> - Type-assignment should be useful for data binding tools.
...
> 3) uniquely determine which group/interleave/choice is applied
> to the content of each element and the value of each attribute,
> and
[1] http://lists.oasis-open.org/archives/relax-ng/200208/msg00012.html
--
MURATA Makoto (FAMILY Given) <>