Ableitung komplexer Typen mithilfe des Beschränkungsmechanismus
Die Ableitung durch Beschränkung funktioniert in BizTalk-Editor hinsichtlich seiner Funktionen ähnlich wie die Ableitung durch Erweiterung. Ein durch Beschränkung abgeleiteter komplexer Typ ist seinem Basisdatentyp ähnlich, seine Deklarationen sind jedoch stärker eingeschränkt als die entsprechenden Deklarationen im Basisdatentyp. Die vom neuen Typ dargestellten Werte sind lediglich eine Teilmenge der vom Basisdatentyp dargestellten Werte (diese Beschränkung gilt auch für einfache Typen). Eine für die Werte des Basisdatentyps vorbereitete Anwendung sollte in der Lage sein, alle Werte des beschränkten Typs erfolgreich zu verarbeiten.
Umfassende Informationen zum Ableiten neuer komplexer Typen mithilfe des Beschränkungsmechanismus finden Sie auf der W3C-Website. Verschiedene Links zu dieser und anderen Websites finden Sie unter XSD-Ressourcen im Web.
Um von einem komplexen globalen Typ durch Einschränkung abzuleiten, beginnen Sie an einer anderen Stelle in der Schemastruktur mit dem Einfügen eines neuen Datensatzknotens an der gewünschten Position. Legen Sie dann die Eigenschaft Basisdatentyp auf den Namen eines komplexen globalen Typs fest. Ändern Sie schließlich die Einstellung der Derived By-Eigenschaft von ihrem Standardwert erweiterung (zumindest wenn ein Basisdatentyp festgelegt ist) in Einschränkung.
Im folgenden Beispiel ist BillingAddress der Name des neu eingefügten Datensatzknotens , und GlobalAddrType ist der Name des komplexen globalen Typs, von dem er abgeleitet wird, und soll eingeschränkt werden. In der Schemastrukturansicht wird unterhalb des Knotens BillingAddress eine doppelte Knotenstruktur angezeigt, die mit der benachbarten Knotenstruktur unter dem Knoten ShippingAddress identisch ist. Der Unterschied besteht darin, dass die Knotenstruktur BillingAddress möglichen Einschränkungen des Basisdatentyps GlobalAddrType unterliegt und die ShippingAddress-Struktur mit dem Basisdatentyp GlobalAddrType identisch bleibt.
Wenn Sie den Basisdatentyp beschränken, dürfen Sie keine neuen Knoten einfügen. Sie können jedoch die Eigenschaften der vorhandenen Knoten ändern, um Werte oder Verhalten weiter einzuschränken.
Zuvor, wobei die Abgeleitete By-Eigenschaft weiterhin auf Extension festgelegt ist.
<xs:schema> <xs:element name="Root"> <xs:complexType> <xs:sequence> <xs:element name="ShippingAddress" type="GlobalAddrType" /> <xs:element name="BillingAddress"> <xs:complexType> <xs:complexContent mixed="false"> <xs:extension base="GlobalAddrType" /> </xs:complexContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name="GlobalAddrType"> [Address structure defined globally here.] </xs:complexType> </xs:schema>
Nachdem Sie die Abgeleitete By-Eigenschaft von Extension in Restriction umgeschaltet haben.
<xs:schema> <xs:element name="Root"> <xs:complexType> <xs:sequence> <xs:element name="ShippingAddress" type="GlobalAddrType" /> <xs:element name="BillingAddress"> <xs:complexType> <xs:complexContent mixed="false"> <xs:restriction base="GlobalAddrType"> [Duplicate of address structure now appears here, ready to be restricted with additional attributes, set using the properties of the relevant nodes in the schema tree.] </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name="GlobalAddrType"> [Address structure defined globally here.] </xs:complexType> </xs:schema>