Substitutionstyp auswählen

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:
Wenn ein XML-Schema ein XML-Element auf der Basis von abgeleiteten Typen definiert, müssen Sie den abgeleiteten Typ (oder Substitutionstyp) angeben, der während der Laufzeit für das XML-Element erwartet wird. Für das gezeigte XML-Beispielschema müssen Sie den Typ des Element <shape> angeben oder Kreis bzw. Rechteck. In Studio geben Sie den erwarteten Substitutionstyp eines XML-Elements unter Verwendung der Menüoption Knoten ersetzen durch... an:
  • Für eine Variable, die auf einem Substitutionstyp basiert, wählen Sie den erwarteten Typ des XML-Elements aus, indem Sie mit der rechten Maustaste auf den Knoten im Fenster Schema von der Registerkarte Variablen klicken und die Option Knoten ersetzen durch... im Menü auswählen. Weitere Informationen finden Sie in Ersetzungstyp für Variablen auswählen.
  • Für einen Knoten in einem Zuordnungsfenster, der auf einen Substitutionstyp basiert, wählen Sie den erwarteten Typ des XML-Elements aus, indem Sie mit der rechten Maustaste auf den Knoten im Fenster Schema von der Registerkarte Variablen klicken und die Option Knoten ersetzen durch im Menü auswählen, wie in der nachfolgenden Prozedur beschrieben.

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.

Im vorherigen Beispiel ist der Basistyp als 'abstrakt' definiert, aber die Typsubstitution abgeleiteter Typen, die auf einem nicht abstrakten Basistyp basieren, wird ebenso unterstützt. Damit der komplexe Typ (complexType) mit dem Namen shapeType im XML-Beispielschema ein nicht abstrakter Typ wird, entfernen Sie das Attribut abstract=true wie im folgenden XML-Schemasegment gezeigt:
<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.

Achtung: Die Typsubstitution von komplexen Typen wird in den Zuordnungsfenstern von Aktivitäten und für Variablen unterstützt. Das Ableiten von Elementen durch Erweitern mithilfe von Substitutionsgruppen wird in den Zuordnungsfenstern von Aktivitäten oder für Variablen nicht unterstützt. Weitere Informationen finden Sie unter Nicht unterstützte XML Schema-Merkmale.

XML-Beispielschema

Das in diesem Abschnitt verwendete XML-Beispielschema wird als Referenz bereitgestellt:
<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>