JAXB minOccurs исчезает, если для параметра установлено значение true - PullRequest
2 голосов
/ 03 февраля 2011

Я получил это из документа JAXB для @ XmlElement

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

Однако, когда я говорю

@XmlElement(name = "Name", required = true, nillable = false)

, в .xsd * я получаю следующее1010 *

<xs:element name="Name" type="xs:string"/>

Интересно, как сделать minOccurs равным 1. Кажется, что required = true приводит к исчезновению minOccurs

Редактировать Я понимаю, что по умолчаниюзначение равно 1. В любом случае minOccurs отображается как 1 в .xsd

Edit2 Я использую JAXBContext.generateSchema для создания схемы (FYI)

Ответы [ 3 ]

2 голосов
/ 03 февраля 2011

Спецификация JAXB определяет поведение:

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

Индивидуальные реализации ( Metro , EclipseLink MOXy , Apache JaxMe ) может свободно генерировать XML-схему в соответствии с этим правилом.Metro и MOXy (я технический руководитель) решили использовать отсутствие атрибута minOccurs для указания minOccurs = "1".

1 голос
/ 03 февраля 2011

Я не эксперт по JAXB, но я считаю, что по умолчанию для minOccurs установлено значение 1 с тегом xs: element. Другими словами, если атрибут «minOccurs» отсутствует в теге, его значение по умолчанию равно 1.

Редактировать: Извините, не увидели ваши изменения, пока не стало слишком поздно!

0 голосов
/ 03 февраля 2011

По умолчанию для элемента xs: minOccurs = 1. Таким образом, можно опустить атрибут и все еще иметь то же значение, что может быть тем, что делает jaxb.

РЕДАКТИРОВАТЬ: увидел ваши изменения слишком поздно. Я никогда не видел способ сделать это, но это не значит, что это невозможно.

...