[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [relax-ng] A mechanism for handling inclusion/exclusion
> Is this crossing the rubicon into rules based validation ala Schematron? One difference is that single-pass event-only validation is good enough. On the other hand, Schematron requires another pass and DOM. Very heavy. inclusion/exclusion is a special case of tree regular grammars. We can use RELAX NG to capture inclusion/exclusion, but the result is verbose. My proposal is arguably a syntax sugar that does not deviate from the underlying theory (tree automata). > In my own efforts, I regularly leave inclusion/exclusion to a separate > pass in a pipeline processing model and find it works well and retains > simplicity through divide and conquer. Yes, this would work for this particular example. But does my proposal (or James' simplified one) hit 80% of the market? It is very easy to implement. Moreover, my proposal can capture what is not possible by such a separate pass, since it can take full advantage of regular tree grammars. > I'm totally out of the loop, but couldn't inclusion/exclusion be looked upon > through DSDL shaped eyes? Apart from Schematron, Part 6 of DSDL is "Path-based integrity constraints". However, I am not sure if Part 6 should cover the proposed mechanism. Rather, Part 6 should be simpler, weaker, and dedicated to extensions of identity constraints as studied in the DB community. > I think it is interesting to consider how you could lay out a validation as > a series of > notional passes, using a mixture of notations for grammars, rules etc. and > yet, through > some comp. sci. magic (perhaps Jackson Inversion), perform all stages in a > single > actual pass through the parse tree. Although I do think that a collection of passes is very useful, I think that this particular case belongs to the realm of regular tree languages and thus RELAX NG. Cheers, -- MURATA Makoto (FAMILY Given) <EB2M-MRT@asahi-net.or.jp>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]