Bindungsunterstützung für das nillable-Attribut
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 nillable-Attribut bereit.
Erklärung
Wenn das nillable-Attribut in einer <element>-Deklaration auf true
festgelegt ist, kann ein xsi:nil-Attribut in einem entsprechenden Element in einem XML-Instanzendokument angezeigt werden. (Das Präfix xsi wird im Allgemeinen für den Namespace der XML-Schemainstanz http://www.w3.org/2001/XMLSchema-instance verwendet.)
Der Wert true
für das xsi:nil-Attribut in einem XML-Element gibt ausdrücklich an, dass das Element keinen Inhalt hat, d. h. weder untergeordnete Elemente noch Textkörper. Die XmlSerializer-Klasse setzt einen true
-Wert für das nil-Attribut mit einem NULL-Verweis (Nothing in Visual Basic) gleich. Informationen dazu, wie die XmlSerializer-Klasse das nil-Attribut serialisiert und deserialisiert, einschließlich spezieller Fälle, finden Sie in den Ausführungen zum xsi:nil-Attribut.
Wenn ein Element mit nillable="false"
oder keinem nillable-Attribut deklariert ist, kann ein nil-Attribut unabhängig vom zugehörigen Wert in einem entsprechenden Instanzelement nicht gültig angezeigt werden.
Generieren des nillable-Attributs aus dem Code
Beim Generieren eines XML-Schemadokuments aus einer Reihe von Klassen in einer Assembly erstellt Xsd.exe ein nillable-Attribut für einen Member eines Werttyps, wenn der Typ auf NULL festgelegt werden kann. Dies geschieht, weil Werttypen auf einen NULL-Verweis (Nothing) festgelegt werden können.
Bei einem Objekt eines Verweistyps überprüft Xsd.exe den Wert der IsNullable-Eigenschaft bestimmter XML-spezifischer Attribute. Wenn die IsNullable-Eigenschaft auf den Wert true
festgelegt ist, erstellt Xsd.exe ein nillable-Attribut und legt dessen Wert auf true
fest. Die IsNullable-Eigenschaft wird in bestimmten XML-Attributklassen verwendet. Die Eigenschaft wird folgendermaßen dargestellt:
Beispiel:
[System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
public string NameNullable;
Aus diesem Code generiert Xsd.exe die folgende XSD-Elementdeklaration:
<xs:element minOccurs="1" maxOccurs="1" name="NameNullable" nillable="true" type="xs:string" />
Wenn die IsNullable-Eigenschaft auf true
festgelegt ist und ein anwendbares Objekt zur Laufzeit auf einen NULL-Verweis (Nothing) festgelegt wurde, generiert die XmlSerializer-Klasse ein xsi:nil-Attribut mit dem Wert true
.
Die IsNullable-Eigenschaft muss für ein Attribut, das auf einen auf NULL festlegbaren Typ angewendet wird, auf true
festgelegt werden.
Bei Verweistypen wird mit dem Wert der IsNullable-Eigenschaft zudem der Wert des minOccurs-Attributs eines <element>-Elements festgelegt. Der Wert true
für IsNullable erstellt den Wert 1
für minOccurs, andernfalls ist der Wert 0
. Weitere Informationen finden Sie in den Ausführungen zum minOccurs-Attribut.
Xsd.exe generiert darüber hinaus unter bestimmten anderen Umständen die nillable="true"
-Einstellung in einer <element>-Deklaration, wenn eine IsNullable-Eigenschaft nicht ausdrücklich auf true
festgelegt ist.
Generieren von Code aus dem nillable-Attribut
Beim Auftreten einer nillable="true"
-Einstellung generiert Xsd.exe einen IsNullable=true
-Parameter für das entsprechende XML-Attribut, das auf die generierte Klasse oder den generierten Member angewendet wird. Für Werttypen werden auf NULL festlegbare Typen generiert.
Mögliche enthaltene Elemente: <element>
Siehe auch
Verweis
Bindungsunterstützung für das xsi:nil-Attribut
System.Xml.Schema.XmlSchemaElement.IsNillable