Для чего нужны minOccurs, nillable и ограничение?

В документации для требуется указано:

Если требуется () равно true , тогда свойство Javabean сопоставляется с элементом схемы XML объявление с minOccurs = "1" . maxOccurs равно «1» для однозначного свойство и «неограниченный» для многозначного свойства.

Если required () равно false , то свойство Javabean отображается в XML. Объявление элемента схемы с minOccurs = "0" . maxOccurs равно "1" для однозначное свойство и «неограниченное» для многозначного свойства.

В документации для nillable говорится:

Если nillable () равно true , то свойство JavaBean отображается в XML. Объявление элемента схемы nillable .


Код для 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;
    }
}

Код для 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;
}

Созданная схема XML:


  
    
    
  



  
    
    
    
    
    
    
    
  


Факты:

  1. Значение по умолчанию для minOccurs - 1. Таким образом, требуется месяц (должен существовать);
  2. Месяц имеет ограничение . Таким образом, месяц может иметь значение, определенное только одним из 12 определенных перечислений;
  3. Значение по умолчанию для nillable ложно.Итак, месяц не может иметь пустых значений,
  4. XML-схема сгенерирована правильно.

Проблемы:

  1. Он принимает отсутствие месяца (не должно существовать);
  2. Он принимает любые значения для месяца, например 13 (кроме тех случаев, когда не может быть синтаксически преобразован в Integer);
  3. Это прием пустых значений;

Я не ожидал этих проблем, я что-то упустил?
Если такое поведение правильное, какова цель required , nillable и xs: ограничение ?

15
задан falsarella 8 April 2015 в 23:03
поделиться