Guidelines for defining components

The guidelines below are numbered to allow references to each other. The numbering does not suggest a priority or a sequence to be followed in observing the guidelines.

  1. Categories cannot have components.

    A category is only used for organizing your type tree and for setting common properties.

  2. A partitioned group cannot have components.

    A partitioned group always represents a choice among the subtypes of that group. You never map a partitioned group without its subtree, so it does not need components.

    Note: A subtree is a branch of a type tree that includes a type and all of the subtypes that stem underneath it.
  3. If a group is not partitioned, it must have at least one component.

    Nonpartitioned groups are sequences of data objects rather than choices. A sequence must contain at least one component.

  4. A type and one of its subtypes cannot be in the same component list.
  5. If a type has components, a subtype can inherit any of those components or any type in the subtree of one of those components.
  6. If a type has no components, a subtype can inherit any type that could be in that type's component list.
  7. A type that has an initiator and a terminator can have itself or one of its ancestors as a component.
  8. A type cannot have one of its subtypes as a component.