In meinem WSDL habe ich ein Element:
<xsd:element minOccurs="0" name="birthDate" nillable="true" type="xsd:dateTime"/>
Ich weiß, dass das nillable true null-Werte zulässt. Bedeutet dies, dass es ein leeres XML-Tag zulassen kann? d.h.
<birthDate/>
Das Setzen von nillable="true"
bedeutet, dass das <birthDate>
-Tag folgendermaßen aussehen kann:
<birthDate xsi:nil="true"/>
Da Sie jedoch auch minOccurs="0"
setzen, können Sie das <birthDate>
-Tag vollständig aus der XML-Datei weglassen, und es würde auch immer noch gegen Ihre XSD geprüft.
Beachten Sie, dass <birthDate/>
oder <birthDate></birthDate>
nach XSD-Regeln nicht als Null betrachtet wird.
Werfen Sie einen Blick auf dieses großartige Blog Post zum Lesen.
Meine Sichtweise zu den obigen Antworten hinzufügen: Eine grundlegende Sache, die viele Anfänger nicht kennen oder berücksichtigen, ist die Bindung der Variablen xsi an den Namespace der Schemainstanz.
Beispiel: xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" [fügen Sie dieses Attribut an einer beliebigen Stelle in einem XML-Eröffnungs-Tag hinzu].
Das Attributpräfix "xsi" muss in diesem Fall mit dem XML-Namespace " http://www.w3.org/2001/XMLSchema-instance " verknüpft werden. Diese Bindung kann in einem der übergeordneten Elemente oder im Wurzelelement selbst erfolgen. Die Festlegung der Bindung hängt davon ab, in welchem Bereich das xsi verfügbar sein soll.
PS: Ich habe die ganze Bedeutung von XML-Namespace-Bindungen und Präfixattributen erkannt, wann immer dies erforderlich war. Als ich mich bei der Arbeit darum bemühte, noch drei Stunden zurückzubleiben, um zu verstehen, warum mein XML-Knoten nicht von seinem xsd-Wert geprüft wird, selbst wenn ein Attribut ohne weiteres vorhanden ist in der Schemadefinition vorhanden.