webentwicklung-frage-antwort-db.com.de

MinOccurs und nillable wahr

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/>
13
SpongebobJunior

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.

17
Tim Biegeleisen

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. 

  • Alle Elemente in der verschachtelten Deklaration erhalten denselben Wert
  • Obwohl Sie einen beliebigen Namen zum Binden des Namensspeichers verwenden können, wird aus Gründen der Kürze immer empfohlen, xsi für " http://www.w3.org/2001/XMLSchema-instance" zu verwenden.

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.

0
krishna kanth