Freigeben über


Bindungsunterstützung für das restriction-Element

Dieses Thema bezieht sich auf eine veraltete Technologie. XML-Webdienste und XML-Webdienstclients sollten nun mithilfe der folgenden Technologie erstellt werden: Windows Communication Foundation.

.NET Framework stellt partielle Bindungsunterstützung für das <restriction>-Element bereit.

Die einzige Typeinschränkung, für die .NET Framework eine vollständig ausgedrückte Bindung bereitstellt, ist die Enumeration der zeichenfolgenbasierten einfachen Typen.

Erklärung

Die XML-Schemadefinitionssprache ermöglicht die Ableitung neuer Typen von Basistypen sowohl durch Erweiterung als auch durch Einschränkung. Erweiterung wird immer verwendet, um komplexe Typen abzuleiten. Einschränkung kann sowohl zur Ableitung komplexer als auch einfacher Typen verwendet werden, wenngleich sie normalerweise für einfache Typen verwendet wird.

Während XML-Schematyperweiterungen stets vollständig durch Klassendefinitionen in .NET Framework ausgedrückt werden, ist die einzige Typeinschränkung, für die eine Bindung vorhanden ist, die Enumeration eines einfachen Typs, die über die XPath-simpleType/restriction/enumeration gefunden wird. Zudem wird das <enumeration>-Element nur dann gebunden, wenn es auf einfache zeichenfolgenbasierte Typen angewendet wird.

Für alle anderen untergeordneten Elemente des simpleType/restriction-Elements (oder wenn die Enumeration auf einen nicht zeichenfolgenbasierten Basistyp angewendet wird) gilt Folgendes:

  • Beim Generieren von Quellcode aus einem XML-Schemadokument ignoriert Xsd.exe die Einschränkung; es erzeugt einfach den .NET Framework-Typ, der dem einfachen Basistyp entspricht.

  • Die XmlSerializer-Klasse ignoriert die Einschränkung, wenn sie Objekte nach XML serialisiert und aus XML deserialisiert.

Für einen komplexen Typ gilt Folgendes: Wenn die Einschränkung einen komplexen Inhalt betrifft – über die XPath-complexType/complexContent/restriction – erzeugt Xsd.exe eine leere Klasse, die von einer Basisklasse erbt. Die XmlSerializer-Klasse ignoriert die Einschränkung. Xsd.exe erkennt keine Einschränkung, die einfachen Inhalt betrifft, über die XPath-complexType/simpleContent/restriction.

Zwar verfügt die Einschränkung nur über beschränkte Bindungsunterstützung, doch wird sie im Schemaobjektmodell vollständig dargestellt. Für die einfache Typeinschränkung gibt es die XmlSchemaSimpleTypeRestriction-Klasse, und für beide Arten der Einschränkung komplexer Typen gibt es die XmlSchemaComplexContentRestriction-Klasse und die XmlSchemaSimpleContentRestriction-Klasse. Des Weiteren haben sowohl XmlSchemaSimpleTypeRestriction als auch XmlSchemaSimpleContentRestriction eine Facets-Eigenschaft, die Objekte enthalten kann, die irgendeines der untergeordneten Elemente der simpleType/restriction oder der simpleContent/restriction darstellen können.

Objekte dieser Klassen können dazu verwendet werden, programmgesteuert ein Schemaobjektmodell zu erstellen, das jegliche Art von Typeinschränkung, die in der XML-Schemaspezifikation enthalten ist, einsetzen kann. Ein solches Modell kann zu einem XML-Schemadokument serialisiert werden und aus einem XML-Schemadokument deserialisiert werden.

Außerdem kann ein XmlValidatingReader-Objekt dazu verwendet werden, ein XML-Instanzendokument mit einem XML-Schema, das Einschränkungen verwendet, gegenzuprüfen.

Mögliche Attribute Bindungsunterstützung

base

Das <restriction>-Element erfordert ein base-Attribut, dessen Wert der gekennzeichnete Name des Basisdatentyps ist.

Zum Definieren einfacher Typen mittels Einschränkung gilt: Der Wert des base-Attributs bestimmt, ob Xsd.exe die Einschränkung erkennt oder nicht. Wenn die Basis ein XML-Schemadatentyp ist, der an eine Zeichenfolge bindet, erzeugt Xsd.exe einen enum-Typ. Andernfalls erzeugt Xsd.exe ein Feld des .NET Framework-Typs, das an den base-Wert bindet.

Siehe den vorhergehenden Text zur Verwendung des base-Attributs beim Definieren komplexer Typen mittels Einschränkung.

id

Das Hilfsprogramm Xsd.exe ignoriert das id-Attribut, mit dem ein eindeutiger Bezeichner bereitgestellt werden soll.

Mögliche übergeordnete Elemente: <complexContent>, <simpleContent>, <simpleType>

Mögliche untergeordnete Elemente: <all>, <annotation>, <anyAttribute>, <attribute>, <attributeGroup>, <choice>, <enumeration>, <fractionDigits>, <group>, <length>, <maxExclusive>, <maxInclusive>, <maxLength>, <minExclusive>, <minInclusive>, <minLength>, <pattern>, <sequence>, <simpleType>, <totalDigits>, <whiteSpace>

Siehe auch

Verweis

XmlSchemaComplexContentRestriction
XmlSchemaSimpleContentRestriction
XmlSchemaSimpleTypeRestriction