A substitution group is a collection of elements that are allowed to be substituted for a particular element.
In the district example, we'll setup a substitution group for 'person' so that 'student', 'teacher', or 'parent' can appear as children of 'district'.
One way to think of this is as an extensible choice. The content model of 'district' could have been:
<xs:choice> <xs:element ref="my:student"/> <xs:element ref="my:parent"/> <xs:element ref="my:teacher"/> </xs:choice>