Quel est le but de minOccurs, nillable et restriction?

Documentation pour requis dit:

Si required() est
truepuis Javabean propriété est associé à un élément de schéma XML
déclaration avec minOccurs="1". maxOccurs est "1" pour une seule valeur
propriété et "unbounded" pour une propriété à valeurs multiples.

Si required() est falsepuis le Javabean propriété est mappée à XML
Schéma de la déclaration de l'élément avec minOccurs="0". maxOccurs est "1" pour un
une seule valeur de la propriété et "unbounded" pour une propriété à valeurs multiples.

Documentation pour nillable dit:

Si nillable() est truepuis le JavaBean propriété est mappée à un XML
Schéma nillable la déclaration de l'élément.


Code pour xs:complexType:

public class WSData {
    //...

    @XmlElement(required = true, nillable = false)
    public void setMonth(XmlMonthType month) {
        this.month = month;
    }

    public void setUserLogin(String userLogin) {
        this.userLogin = userLogin;
    }
}

Code pour xs:simpleType:

@XmlType
@XmlEnum(Integer.class)
public enum XmlMonthType {
    @XmlEnumValue("1")
    JANUARY,
    @XmlEnumValue("2")
    FEBRUARY,
    @XmlEnumValue("3")
    MARCH,
    /* ... months 4 ~9 ... */
    @XmlEnumValue("10")
    OCTOBER,
    @XmlEnumValue("11")
    NOVEMBER,
    @XmlEnumValue("12")
    DECEMBER;
}

Généré Schéma XML:

<xs:complexType name="wsData">
  <xs:sequence>
    <xs:element name="month" type="xs:string"/>
    <xs:element minOccurs="0" name="userLogin" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

<xs:simpleType name="xmlMonthType">
  <xs:restriction base="xs:int">
    <xs:enumeration value="1"/>
    <xs:enumeration value="2"/>
    <xs:enumeration value="3"/>
    <!-- ... months 4 ~9 ... -->
    <xs:enumeration value="10"/>
    <xs:enumeration value="11"/>
    <xs:enumeration value="12"/>
  </xs:restriction>
</xs:simpleType>

Les faits:

  1. La valeur par défaut pour minOccurs est 1. Donc, mois est nécessaire (doit exister);
  2. Le mois a un restriction. Donc, mois ne peut avoir qu'une valeur définie par l'une des 12 définis énumérations;
  3. La valeur par défaut pour nillable est faux. Donc, mois ne pouvez pas avoir des valeurs vides;
  4. Le Schéma XML est généré correctement.

Les problèmes:

  1. C'est l'acceptation du mois abcense (ne doit pas exister);
  2. C'est accepter toutes les valeurs par mois, de 13 (sauf quand il n'est pas parseable pour Integer);
  3. C'est l'acceptation des valeurs vides;

Je ne m'attendais pas à ces problèmes, suis-je raté quelque chose?
Si ce comportement est correct, quel est le but de requis, nillable et xs:restriction?

source d'informationauteur falsarella