I'm a bit confused by the use of PureODD's <classRef>.
When the class being referred to is a model class, it would seem the
intent is that it be used form within <content>, and the members of
that model class can appear at this point in the content model. And,
indeed, all 25 examples of <classRef key="model.*"> occur as
descendants of <content>.
When the class being referred to is an attribute class, it would seem
the intent is that the attributes defined by the class are available
to be used, as a group, by reference to the class name on
classes/memeberOf/@key. And, indeed, all 3 examples of <classRef
key="att.*" occur as children of <schemaSpec>.
But what does it *mean* (and what *happens*) when <classRef> is used
in other circumstances in which it is allowed by the schema:
1. schemaSpec/classRef[ starts-with( @key, 'model.') ]
2. content/classRef[ starts-with( @key, 'att.') ]
3. content/descendent::classRef[ starts-with( @key, 'att.') ]
4. classRef[ starts-with( @key, 'att.' ][ @expand ] )
I think it is incumbent upon us for each of these combinations to
either
a) say what it means, and perhaps even have Stylesheets code that
does the right thing, OR
b) say it is not allowed (and have a validity check that prevents
it).
P.S. I have briefly tested #2, and it appears to do exactly what I
expected: the attributes defined by the class referenced are
allowed on that element. @include did not work, though. (All
attrs were included in schema, not just the included one.)