web-dev-qa-db-fra.com

MinOccurs et nillable true

Dans mon wsdl j'ai un élément:

<xsd:element minOccurs="0" name="birthDate" nillable="true" type="xsd:dateTime"/>

Je sais que le vrai nillable autorise les valeurs null. Cela signifie-t-il qu'il peut autoriser une balise vide XML? c'est à dire 

<birthDate/>
13
SpongebobJunior

La définition de nillable="true" signifie que la balise <birthDate> peut apparaître comme suit:

<birthDate xsi:nil="true"/>

Cependant, étant donné que vous définissez également minOccurs="0", vous pouvez également omettre complètement la balise <birthDate> du code XML et la valider également avec votre XSD.

Notez que <birthDate/> ou <birthDate></birthDate> n'est pas considéré comme nul selon les règles XSD.

Jetez un coup d'œil à ce blog génial post pour en savoir plus.

17
Tim Biegeleisen

Ajout de mon point de vue aux réponses ci-dessus, une chose fondamentale que beaucoup de débutants ne connaissent pas ou ne prennent pas en compte est de lier la variable xsi avec l’espace de nom d’instance de schéma.

Exemple: xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" [ajoutez ceci en tant qu'attribut n'importe où dans une balise d'ouverture xml].

Dans ce cas, le préfixe d'attribut "xsi" doit être lié à l'espace de noms XML " http://www.w3.org/2001/XMLSchema-instance ". Cette liaison peut être effectuée dans n'importe quel élément parent ou dans l'élément racine lui-même. Où le faire dépend de l'étendue pour laquelle vous souhaitez que xsi soit disponible. 

  • Tous les éléments imbriqués dans la déclaration obtiennent la même valeur
  • Bien que vous puissiez utiliser n'importe quel nom pour lier le namespcae, il est toujours recommandé d'utiliser xsi pour " /http://www.w3.org/2001/XMLSchema-instance"

PS: J'ai réalisé toute l'importance des liaisons d'espace de noms xml et des préfixes, le cas échéant, lorsque j'ai eu du mal à rester au travail pendant 3 heures supplémentaires pour comprendre pourquoi mon nœud xml n'est pas validé par son xsd, même dans le cas d'un attribut illimité en présent dans la définition du schéma.

0
krishna kanth