Я иду назад и вперед с установкой элемента к minOccurs="0"
и nillable="true"
.
Я читал эту статью, и теперь в моем WSDL я не уверен, если использование обоих стоит того. Статья дает хороший пример представления массивов, где Вам можно было бы вкрапить нулевые значения повсюду, поскольку это не может быть, покончили просто minOccurs="0"
. Теперь, конвенция, с которой я шел, состоит в том, что, если элемент не является дополнительным, это не способно иметь значение NULL. Различие насколько я понимаю, и где мой вопрос находится, то, что путем применения способного иметь значение NULL свойства к элементу, я говорю, что можно передать в XSD, эквивалентном из Нулевого значения? Иначе, элемент без способного иметь значение NULL свойства, должен иметь значение в ограничении, установленном для него?
Вам необходимо решить, думаете ли вы об XML как об XML или о XML как о способе передачи Java (или другого) объекта отсюда туда.
В XML, nillable допускает построение
в качестве индикатора явно отсутствующего значения, например SQL NULL. Это семантически отличается от просто
. И оба они вообще ни от чего не отличаются. Итак, глядя на XML, вы должны различать четыре случая:
<!-- nothing -->
<myElement attr1='true'>some content</myElement>
<myElement/>
<myElement xsi:nil='true'/>
Если, с другой стороны, вас в первую очередь интересует Java - возможно, потому, что вы используете SOAP, то вам нужно подумать о том, как объект Java отображает обратно и т. д.
Для любого элемента Java, наследуемого от Object, JAXB и другим технологиям отображения требуется способ работы с нулевыми значениями. Nillable - способ сделать это. Если вы запретите nillable для чего-то, что может быть объектом, наборы инструментов будут раздражающе использовать массив, чтобы найти способ представления отсутствия.
С другой стороны, если у вас есть массив, имейте в виду, что сам массив является объектом и может иметь значение NULL. Итак, каждый инструментарий должен отличать массив с нулевым элементом от нулевого.
С другой стороны, если у вас есть примитивный тип (например, int
), nillable приведет к проблемам, так как нет отображения xsi: nil на примитив.
С другой стороны, если у вас есть примитивный тип (например, int
), nillable приведет к проблемам, поскольку нет никакого отображения из xsi: nil в примитив.
С другой стороны, если у вас есть примитивный тип (например, int
), nillable приведет к проблемам, поскольку нет никакого отображения из xsi: nil в примитив.