The ODD <moduleRef>
element supports pulling in a subset of the elements belonging to that module by means of the @except and @include attributes. Because it is limited to elements, this does not give the ODD user the ability to use this mechanism to exclude/include classes or macros (eg datatypes). This seems inconsistent.
The downside of regularizing this is that it means any ODD which currently uses the feature may have an unexpected, dramatic, and hard-to-diagnose change; if it currently says <moduleRef key="moduleX" include="foo bar"/>
, and moduleX includes some class definitions, the schema will include the classes. If we changed the semantics of @include, then the same ODD would no longer include those classes. The user of @except would be unaffected.
The argument in favour is transparency and consistency.
Assigning to Syd Bauman to triage, and report to Council.
Council group votes to reject this ticket in favour of the existing definition, which is clear. The Guidelines prose should be enhanced to clarify the fact that @include and @except can only be used to include or except elements (not classes, models or datatypes).
SPQR has checked the code, and found that (as suspected) these attributes do not operate on anything other than elements.