* CAS 1 : Si on considère que lorsque l'information est vide, le tag n'a pas à apparaitre
XSD :
<element name="DateFinValidite" type="date" minOccurs="0" />
XML Valide :
<com:DateDebutValidite>2013-08-01</com:DateDebutValidite>
<com:DateMAJ>2013-09-17T00:00:00</com:DateMAJ>
ou
<com:DateDebutValidite>2013-08-01</comateDebutValidite>
<com:DateFinValidite >2014-08-01</DateFinValidite>
<com:DateMAJ>2013-09-17T00:00:00</comateMAJ>
XML Invalide :
<com:DateDebutValidite>2013-08-01</comateDebutValidite>
<com:DateFinValidite/>
<com:DateMAJ>2013-09-17T00:00:00</comateMAJ>
* CAS 2 : Si on veut voir tout le temps, quoiqu'il arrive, apparaitre le tag concerné que l'information soit vide ou renseignée
Il y a alors 2 solutions :
SOLUTION A/ usage de nil
XSD :
<element name="DateFinValidite" type="date" nillable="true" minOccurs="1" maxOccurs="1"/>
XML Valide:
<com:DateDebutValidite>2013-08-01</comateDebutValidite>
<com:DateFinValidite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<com:DateMAJ>2013-09-17T00:00:00</comateMAJ>
ou
<com:DateDebutValidite>2013-08-01</comateDebutValidite>
<com:DateFinValidite >2014-08-01</DateFinValidite>
<com:DateMAJ>2013-09-17T00:00:00</comateMAJ>
SOLUTION B/ surcharge de type
XSD :
<element name="DateFinValidite" type="tns:dateNull" minOccurs="1" maxOccurs="1"/>
<simpleType name="emptyString">
<restriction base="string">
<length value="0" />
</restriction>
</simpleType>
<simpleType name="dateNull">
<union memberTypes="date tns:emptyString" />
</simpleType>
<simpleType name="intNull">
<union memberTypes="integer tns:emptyString" />
</simpleType>
XML Valide:
<com:DateDebutValidite>2013-08-01</comateDebutValidite>
<com:DateFinValidite/>
<com:DateMAJ>2013-09-17T00:00:00</comateMAJ>
ou
<com:DateDebutValidite>2013-08-01</comateDebutValidite>
<com:DateFinValidite >2014-08-01</DateFinValidite>
<com:DateMAJ>2013-09-17T00:00:00</comateMAJ>