Substitution Groups
A feature that is closely related to derived types is
the substitution group . A substitution group is a collection of elements
that are all interchangeable with a particular element, called the
head element , within an instance document. To create a substitution group, all
that is required is that an element declaration include a substitutionGroup attribute that names the
head element for that group. Then, anywhere that the head element’s
declaration is referenced in the schema, any member of the
substitution group may also appear. Unlike derived types, it isn’t
necessary to use the xsi:type
attribute in an instance document to identify the type of the
substituted element.
Tip
The primary restriction on substitution groups is that every element in the group must be either of the same type as or derived from the head element’s type. Declaring a numeric element and trying to add it to a substitution group based on a string element would generate an error from the schema processor. The elements must also be declared globally and in the target namespace of the schema.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access