You can have instances with derived types.
Your original schema doesn't have to know about it.
Their extensions/restrictions are allowed in the instance.
But they have to tell the processor about the derived type:
<student xsi:type='my:SpecialStudent'> <my:xml-knowledge>XSLT XML Schema</my:xml-knowledge> </student>
And a possible type for this:
<xs:complexType name="SpecialStudent"> <xs:complexContent> <xs:extension base="Student"> <xs:element name="my-knowledge" type="xs:string"/> </xs:extension> </xs:complexContent> </xs:complexType>