Die XML-Schemaspezifikation unterstützt die Möglichkeit, komplexe Typen durch Erweiterung abzuleiten.
Sie deklarieren im XML-Instanzdokument den Typ eines XML-Elements von einer Gruppe von Typen, die alle vom selben Basistyp abgeleitet wurden, anstatt den Typ für das XML-Element im XML-Schema explizit zu deklarieren. Der Typ für das Element wird mithilfe des Attributs Typ definiert, wie im folgenden XML-Beispielinstanzdokument gezeigt:
<?xml version="1.0" encoding="UTF-8"?>
< shape xmlns="http://shapesrus.com/example"
xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:type="circle">
<color xmlns="">blue</color>
<diameter xmlns="">10</diameter>
</shape>
Im vorangegangenen XML-Instanzdokument wird das Element <shape> als Typ Kreis deklariert. Das Element <shape> im XML-Instanzdokument kann auch als Typ Rechteck definiert werden, wie im folgenden XML-Beispielinstanzdokument gezeigt:
<?xml version="1.0" encoding="UTF-8"?>
< shape xmlns="http://shapesrus.com/example"
xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:type="rectangle">
<color xmlns="">blue</color>
<length xmlns="">5</length>
<width xmlns="">8</width>
</shape>
In diesem Beispiel liegt dem Element <shape> einer der abgeleiteten Typen des Basistyps shapeType zugrunde. Die abgeleiteten Typen von shapeType werden Kreis und Rechteck genannt, wie im folgenden XML-Beispielschema gezeigt:Im zuvor gezeigten XML-Beispielschema ist der Basistyp mit dem Namen <shapeType> als 'abstrakt' definiert. Ein abstrakter Basistyp kann nicht im XML-Instanzdokument verwendet werden, um den Typ für das Element zu definieren. Stattdessen muss einer der abgeleiteten Typen angegeben werden. In diesem Beispiel kann das Element <shape> im XML-Instanzdokument nicht als shapeType deklariert werden; es muss als einer der abgeleiteten Typen deklariert werden, entweder als Kreis oder als Rechteck.
<xsd:complexType name="shapeType">
<xsd:sequence>
<xsd:element name="color" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
WSDL ist ein bestimmtes XML-Schema, das einen Web-Services definiert. Die Verwendung der Typsubstitution mit WSDL wird auch unterstützt.Sie können den Substitutionstyp für ein erweitertes Auftreten eines wiederholt auftretenden Zielknotens angeben. Diese Typsubstitution eines erweiterten Auftretens wird nur für die wiederholt auftretenden Zielknoten unterstützt. Zielknoten befinden sich in den Zuordnungsfenstern auf der rechten Seite.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://shapesrus.com/example"
xmlns:sru="http://shapesrus.com/example">
<xsd:element name="shape" type="sru:shapeType"/>
<xsd:complexType name="shapeType" abstract="true">
<xsd:sequence>
<xsd:element name="color" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="circle">
<xsd:complexContent>
<xsd:extension base="sru:shapeType">
<xsd:sequence>
<xsd:element name="diameter" type="xsd:integer"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="rectangle">
<xsd:complexContent>
<xsd:extension base="sru:shapeType">
<xsd:sequence>
<xsd:element name="length" type="xsd:integer"/>
<xsd:element name="width" type="xsd:integer"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>