default sorting algorithms, schema constraints

So latest schema has configurable sorting, but I don’t think that’s a
critical feature, either for users, or for software, so I’ve added an
option to use a default set of algorithms.

cs-sort =
element cs:sort {
attribute algorithm { “author-date” | “cited” | “label” }
> (cs-fields+)
}

Looks like:

This is basically the same as the earlier schema, but there’s just now
a sort element.

This brings me back to the question about validation. With RELAX NG,
it’s possible to have quite tight validation constraints. In the first
versions of the schema, I exploited this to the hilt. One choose a
class of citation style on the root (like “author-date”), and
validation through the rest of the style was then tightly coupled to
that expectation. So in that case, one had to have a citation with
author and date elements in the template, one had to have a
bibliography element, and the first element in each template IIRC had
to be an author.

Is there any value in tightening things up again before we finish? If
yes, what kinds of constraints should we have? One obvious one is that
if one users and author element in a template, it must be the first
element.

Advantages:

style developers less likely to make "mistakes"
software easier to write because you don't have to design for 

everything (e.g. sorting)

Disadvantages:

we might end up with a situation where we exclude something we 

shouldn’t
the more I exploit the power of RELAX NG, the more difficult it is to
represent in XSD (though adding some schematron rules could address
that I think)

Bruce