This chapter did not cover many parts of the Schema Recommendation. When the discussion focused on only a few items from a long list, such as the list of basic simpleTypes, we have mentioned the existence of these additional items. Note, however, that some capabilities are generally not mentioned elsewhere:
Schema in Instances
You can insert schema constructs into actual instances of XML for example, to indicate the type of an element by adding an attribute. Such schema constructs in instances use a different schema namespace defined for that purpose. As we use schemas only to provide descriptive models for specification and expository purposes, this capability is not relevant.
You can create types that consist of lists of instances of simpleTypes separated by white space.
You can create types that are unions of basic simpleTypes and combine them with list types.
Restrictions on Type Derivation
You can specify a type so that you cannot derive other types from it or so that, in derivation, you cannot change certain facets of the type.
You can create a complicated extension of groups with complicated restrictions.
"Nillable" elements provide a method for declaring that it is valid for an instance of an element to be empty despite the element's type appearing to prohibit it.
A schema can indicate that certain attribute values or element contents within a specified scope must be unique values. In addition, it can indicate that certain, possibly composite values act as "keys" or references to keys in a manner somewhat similar to ID and IDREF.
Deriving Types from Complex Types
You can specify a complex type by restricting or extending a complex type.
You can declare an element to be substitutable for another element.