How can one determine when a specific component is required?

Each component lists the ways in which it may be required , and other components which it may require.

A component is any of the following:

  1. The type is used by the consumer of the schema (either in an instance or an outside schema)
  2. It is used as the type of an element or attribute
  3. It is the base type of another type definition This requirement should not be ignored. When defining a type, it is important that all base types of that type be included in the schema. Even if they are empty (i.e. have no attributes or elements), they should be included. A base type may be empty if there are no requirements for elements or attributes of that type to appear in instances or outside schemas . Even in such a case, the type should still be included, preserving the type hierarchy.

A type definition may require other components: 

Global element definition Every element that represents a data model entity has a single definition in the schema. A global element definition is required when: 

The type definition for its data type. -Global attribute definition Every attribute in the schema that represents a data model property is given a single definition. Each use of the attribute references that definition (using ref=)

A global attribute definition is required when:

A global attribute definition requires:  The type definition for its data type -Occurrence of an element in a type

An occurrence of an element in a type is required when: 

An occurrence of an element in a type definition requires:  The global definition of the element -Occurrence of an attribute in a type definition

An occurrence of an attribute in a type is required when: 

An occurrence of an attribute in the SuperTypeMetadata is required when:

An enumeration is required when: An instance may include the enumeration as a data value.