Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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>