[tei-council] constraint again
Lou Burnard
lou.burnard at oucs.ox.ac.uk
Tue Apr 21 03:10:59 EDT 2009
Sebastian Rahtz wrote:
>
> b) is <constraintGrp> a necessary container, or a convenience
> semantic or syntactic grouping? ie
> - can it be omitted, and does <constraint> therefore have
> @scheme
> - does the Grp need its own ident and description?
Whether or not <constraintGrp> is needed, I think <constraint> must have
@scheme. As my previous post indicates, I think they both might also
have @type, or (better) @function (@scope?) as well, to say something
about the kind of constraint being documented.
As Sebastian says, we're not clear whether the purpose of
<constraintGrp> is primarily
(a) to provide a default value for these attributes applicable to all
its child <constraint> elements
(b) just (like <attList>) to wrap around all the <constraint>s within
the parent *Spec
The two are not mutually exclusive of course, but the former implies
that it's optional.
> the semantics would then be that
> <constraint> children of Grp are _alternative implementations_,
> and multiple Grps are _additive_, ie must all apply.
>
Does a validating TEI application have to ensure that *all* constraints
are observed, or only those which are expressed in a scheme it knows how
to handle? Presumably the latter. Considering those constraints which it
cannot handle, the existence of "alternatives" suggests that some of
these unhandle-able ones matter more than others: if you can't handle
constraint X1 in scheme 1, but you can handle constraint X2 in scheme
2, and X1 and X2 are labelled as "alternates" then you're obviously
nearer enlightenment than if you can't be doing with anything in scheme
1 and no X2 exists. On the face of it, this sounds cool. As Sebastian
suggests, you could indicate that X1 and X2 are actually alternate
versions of each other by wrapping them in a constraintGroup and
specifying a (single) @ident X on that.
On balance however I think (and yesterday he persuaded me) this may be
over-egging the pudding: certainly, it complicates implementation quite
a lot. The differences between schemes are not purely syntactic: they
also differ greatly in expressivity. So while X2 might be re-expressible
in the language of X1, the chances that it will always be exactly the
*same* constraint seem slim to me. It also seems a lot more realistic
to say that TEI validation implies that *as many as possible* of the
specified constraints are satisfied. This allows an implementation to
decide (and be upfront about about) those which it cannot do; leaving
the door open for the really obsessive TEI-conformant validator which
validates against all possible schemes. (and probably always washes
behind its ears, tidies its room before sleeping, and generally needs to
get out more)
More information about the tei-council
mailing list