Bindungsunterstützung für das schema-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 Bindungsunterstützung für das <schema>-Element bereit.
Das <schema>-Element ist das Stammelement eines XML-Schemadokuments.
Erklärung
Das <schema>-Element ist das Stammelement eines XML-Schemadokuments.
Von den Attributen des <schema>-Elements verfügen die Attribute blockDefault, finalDefault, id und version über keine Bindungen an .NET Framework-Codeentitäten. Das targetNamespace-Attribut wird erkannt, das attributeFormDefault-Attribut und das elementFormDefault-Attribut werden teilweise erkannt. Siehe folgende Tabelle. Nähere Informationen finden Sie in den Themen zu den einzelnen Attributen.
TargetNamespace-Attribut
Das targetNamespace-Attribut des <schema>-Stammelements gibt den Namespace des Schemas als Uniform Resource Identifier (URI) an. Das Tool Xsd.exe ordnet das targetNamespace-Attribut des <schema>-Elements den Namespace-Eigenschaften verschiedener XML-verwandter Attribute zu.
Beim Generieren von Quellcode aus einem XML-Schemadokument verwendet Xsd.exe den targetNamespace-Wert wie folgt:
Für jeden generierten Typ, der einem Datentyp in dem Schema entspricht, legt Xsd.exe die System.Xml.Serialization.XmlTypeAttribute.Namespace-Eigenschaft auf den targetNamespace-Wert fest.
Für jeden generierten Typ, der einem Datentyp entspricht, der als Stamm eines schemakonformen XML-Dokuments auftreten kann, legt Xsd.exe die System.Xml.Serialization.XmlRootAttribute.Namespace-Eigenschaft auf den targetNamespace-Wert fest. Ein Datentyp kann als ein Dokumentstamm auftreten, wenn er von einem <element>-Element verwendet wird, das global deklariert ist (als untergeordnetes Element des <schema>-Stammelements).
Beim Generieren eines XML-Schemadokuments aus einem Satz an Klassen in einer Assembly erzeugt Xsd.exe ein XML-Schemadokument mit einem eindeutigen targetNamespace-Attribut für jeden eindeutigen Wert, den es in der Namespace-Eigenschaft bestimmter XML-Attributklassen vorfindet. Die Eigenschaft wird folgendermaßen dargestellt:
System.Xml.Serialization.XmlRootAttribute.Namespace
System.Xml.Serialization.XmlTypeAttribute.Namespace
AttributeFormDefault-Attribut
Das Hilfsprogramm Xsd.exe generiert XML-Schemas, die das globale attributeFormDefault-Attribut nicht angegeben. Wenn es das Attribut in einem vorhandenen Schema findet, legt es die Form-Eigenschaft des XmlAttributeAttribute bei jedem nicht überschriebenen Feld entsprechend fest.
Erklärung: AttributeFormDefault-Attribut
Das XML-Schema erfordert, dass alle Elemente und Attribute, die (als untergeordnete Elemente des <schema>-Elements) global deklariert sind, in einem Instanzendokument als durch einen Namespace gekennzeichnet erscheinen. Für lokal deklarierte Elemente und Attribute (innerhalb einer <complexType>-Definition), ist die Kennzeichnung durch einen Namespace optional.
Zur Steuerung der Kennzeichnung durch einen Namespace für alle lokalen Elemente und Attribute, die in einem XML-Schemadokument deklariert sind, verwenden Sie das elementFormDefault-Attribut bzw. das attributeFormDefault-Attribut des <schema>-Stammelements. Bei beiden Attributen sind die Werte qualified
oder unqualified
möglich, wobei der Standard unqualified
ist.
Zusätzlich kann das form-Attribut bei einer lokalen <element>-Deklaration oder <attribute>-Deklaration zum Überschreiben des Schemastandards für dieses bestimmte Element oder Attribut verwendet werden.
Die folgende Tabelle beschreibt, wie Xsd.exe die drei Auswahlmöglichkeiten für attributeFormDefault verarbeitet: qualified
, unqualified
, nicht angegeben. (Bedenken Sie, dass Xsd.exe beim Generieren von Quellcode aus einem XML-Schemadokument für jedes XML-Attribut ein öffentliches Feld erzeugt und darauf das .NET Framework-XmlAttributeAttribute-Attribut anwendet.)
Mögliche attributeFormDefault-Werte |
Von Xsd.exe aus XSD generierter Quellcode |
Von Xsd.exe generiertes XSD aus der Assembly, die aus gleicher Quelle kompiliert wurde |
|
Klassen und jene Felder, die Attributen entsprechen, erscheinen ohne angegebenes form |
Nicht angegeben, stellt den Standard |
|
Klassen und jene Felder, die Attributen entsprechen, erscheinen ohne angegebenes form |
Nicht angegeben, stellt den Standard |
|
Felder, die sowohl lokal deklarierten Attributen als auch global deklarierten Attributen entsprechen, auf die verwiesen wird, erscheinen mit einem XmlAttribute-Attribut, dem |
Nicht angegeben, stellt den Standard Außerdem gibt jede Attributdeklaration |
Der Parameter, der der XmlAttribute-Deklaration übergeben wird, legt die Form-Eigenschaft fest, deren mögliche Werte aus der XmlSchemaForm-Enumeration stammen.
XmlSchemaForm.Qualified
XmlSchemaForm.Unqualified
XmlSchemaForm.None: der Standard
Eine Folge der Verwendung eines XmlAttribute-Parameters ist, dass das, was im ursprünglichen XSD-Dokument eine globale Einstellung gewesen ist, nun bei jedem einzelnen XML-Attribut im Quellcode und im generierten XDS angegeben wird. Das globale attributeFormDefault-Attribut wird stets als nicht angegeben betrachtet und stellt den Standardwert von unqualified
wieder her.
Beispiel: AttributeFormDefault-Attribut
XML-Schema-Eingabedokument mit attributeFormDefault="qualified"
:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified"
xmlns="http://example.org/" targetNamespace="http://example.org/" elementFormDefault="qualified">
<xsd:attribute name="version" type="xsd:string"/>
<xsd:complexType name="keyInfo">
<xsd:attribute ref="version" />
<xsd:attribute name="public" type="xsd:boolean" use="required"/>
</xsd:complexType>
<xsd:element name="key" type="keyInfo"/>
</xsd:schema>
Aus dem vorherigen XML-Schemadokument generierte C#-Klasse:
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
[System.Xml.Serialization.XmlRootAttribute("key", Namespace="http://example.org/", IsNullable=false)]
public class keyInfo {
[System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified)]
public string version;
System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified)]
public bool @public;
}
XML-<schema>-Stammelement generiert aus einer Assembly, die aus dem vorhergehenden C#-Quellcode kompiliert wurde (Attributdeklarationen erscheinen auch ohne form-Attribut):
<xs:schema xmlns:tns="http://example.org/" elementFormDefault="qualified" targetNamespace="http://example.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
</xs:schema>
ElementFormDefault-Attribut
Das Hilfsprogramm Xsd.exe generiert XML-Schemas, die das globale elementFormDefault-Attribut auf "qualified"
festgelegt belassen. Wenn es das Attribut in einem vorhandenen Schema findet, legt es die Form-Eigenschaft des XmlElementAttribute bei jedem nicht überschriebenen Feld entsprechend fest.
Erklärung: ElementFormDefault-Attribut
Das XML-Schema erfordert, dass alle Elemente und Attribute, die (als untergeordnete Elemente des <schema>-Elements) global deklariert sind, in einem Instanzendokument als durch einen Namespace gekennzeichnet erscheinen. Für lokal deklarierte Elemente und Attribute (innerhalb einer <complexType>-Definition), ist die Kennzeichnung durch einen Namespace optional.
Zur Steuerung der Kennzeichnung durch einen Namespace für alle lokalen Elemente und Attribute, die in einem XML-Schemadokument deklariert sind, verwenden Sie das elementFormDefault-Attribut bzw. das attributeFormDefault-Attribut des <schema>-Stammelements. Bei beiden Attributen sind die Werte qualified
oder unqualified
möglich, wobei der Standard unqualified
ist.
Zusätzlich kann das form-Attribut bei einer lokalen <element>-Deklaration oder <attribute>-Deklaration zum Überschreiben des Schemastandards für dieses bestimmte Element oder Attribut verwendet werden.
Zwar ist der Standardwert von elementFormDefault unqualified
, aber .NET Framework behandelt den Standard tatsächlich als qualified
; dennoch wird die Verwendung von unqualified
akzeptiert. Die folgende Tabelle beschreibt, wie Xsd.exe die drei Auswahlmöglichkeiten für elementFormDefault verarbeitet: qualified
, unqualified
, nicht angegeben. (Bedenken Sie, dass Xsd.exe beim Generieren von Quellcode aus einem XML-Schemadokument für jedes XML-Element ein öffentliches Feld erzeugt.)
Mögliche elementFormDefault-Werte |
Von Xsd.exe aus XSD generierter Quellcode |
Von Xsd.exe generiertes XSD aus der Assembly, die aus gleicher Quelle kompiliert wurde |
|
Klassen und jene Felder, die Elementen entsprechen, erscheinen ohne angegebenes form. |
|
|
Klassen und jene Felder, die Elementen entsprechen, erscheinen ohne angegebenes form. |
|
|
Felder, die lokal deklarierten Elementen entsprechen, erscheinen mit einem XmlElement-Attribut, dem |
Außerdem verwendet jedes Element, das ursprünglich lokal deklariert war, |
Der Parameter, der der XmlElement-Deklaration übergeben wird, legt die Form-Eigenschaft fest, deren mögliche Werte der XmlSchemaForm-Enumeration entstammen.
XmlSchemaForm.Qualified
XmlSchemaForm.Unqualified
XmlSchemaForm.None: der Standard
Eine Folge der Verwendung eines XmlElement-Parameters ist, dass das, was im ursprünglichen XSD-Dokument eine globale Einstellung gewesen ist, nun bei jedem einzelnen XML-Element im Quellcode und im generierten XDS angegeben wird. Es wird stets davon ausgegangen, dass das globale elementFormDefault-Attribut den Wert qualified
hat.
Beispiel: ElementFormDefault-Attribut
XML-Schema-Eingabedokument mit elementFormDefault="unqualified"
:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://example.org/" targetNamespace="http://example.org/" elementFormDefault="unqualified">
<xsd:element name="version" type="xsd:string"/>
<xsd:complexType name="keyInfo">
<xsd:sequence>
<xsd:element ref="version" />
<xsd:element name="public" type="xsd:boolean" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="key" type="keyInfo"/>
</xsd:schema>
Aus dem vorhergehenden XML-Schemadokument generierte C#-Klasse:
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
[System.Xml.Serialization.XmlRootAttribute("key", Namespace="http://example.org/", IsNullable=false)]
public class keyInfo {
public string version;
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public bool @public;
}
Ein XML-Schemadokument, das aus einer Assembly generiert wurde, die ihrerseits aus dem vorhergehenden C#-Quellcode kompiliert wurde.
<xs:schema xmlns:tns="http://example.org/" elementFormDefault="qualified" targetNamespace="http://example.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="key" type="tns:keyInfo" />
<xs:complexType name="keyInfo">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="version" type="xs:string" />
<xs:element minOccurs="1" maxOccurs="1" form="unqualified" name="public" type="xs:boolean" />
</xs:sequence>
</xs:complexType>
</xs:schema>
Mögliche Attribute | Bindungsunterstützung |
---|---|
attributeFormDefault |
.NET Framework erkennt den Standardwert Siehe vorhergehenden Abschnitt AttributeFormDefault-Attribut. |
blockDefault |
Das blockDefault-Attribut des <schema>-Elements stellt einen Standardwert für die block-Attribute des <complexType>-Elements und des <element>-Elements bereit. Das Tool Xsd.exe ignoriert das blockDefault-Attribut des <schema>-Elements ebenso wie das block-Attribute in dessen jeweiligen Elementen. |
elementFormDefault |
.NET Framework verwendet tatsächlich einen anderen Standardwert, nämlich Siehe vorhergehenden Abschnitt zum elementFormDefault-Attribut. |
finalDefault |
Das finalDefault-Attribut des <schema>-Elements stellt einen Standardwert für die final-Attribute bestimmter Elemente bereit. Das Tool Xsd.exe ignoriert das finalDefault-Attribut des <schema>-Elements ebenso wie das final-Attribute in dessen jeweiligen Elementen. |
id |
Das Hilfsprogramm Xsd.exe ignoriert das id-Attribut, mit dem ein eindeutiger Bezeichner bereitgestellt werden soll. |
xml:lang |
Xsd.exe ignoriert das lang-Attribut vom Namespace http://www.w3.org/XML/1198, wenn es im <schema>-Stammelement verwendet wird. |
targetNamespace |
Das Tool Xsd.exe ordnet das targetNamespace-Attribut des <schema>-Elements den Namespace-Eigenschaften verschiedener XML-spezifischer Attribute zu. Welche Attribute verwendet werden, hängt von der Richtung der Übersetzung ab. Siehe vorhergehenden Abschnitt TargetNamespace-Attribut. |
version |
Das version-Attribut ist für Dokumentation verfügbar. Das Tool Xsd.exe ignoriert das Attribut. |
Mögliche übergeordnete Elemente: keine (Stammelement)
Mögliche untergeordnete Elemente: <annotation>, <attribute>, <attributeGroup>, <complexType>, <element>, <group>, <import>, <include>, <notation>, <redefine>, <simpleType>