MinOccurs 0 и nillable true

В моем wsdl у меня есть элемент:

<xsd:element minOccurs="0" name="birthDate" nillable="true" type="xsd:dateTime"/>

Я знаю, что nillable true позволяет использовать null-значения, это означает, что он может разрешать пустой тег xml? iee

<birthDate/>

Ответ 1

Настройка nillable="true" означает, что тег <birthDate> может выглядеть следующим образом:

<birthDate xsi:nil="true"/>

Однако, поскольку вы также установили minOccurs="0", вы также можете полностью опустить тег <birthDate> из XML, и он также будет проверять ваш XSD.

Обратите внимание, что <birthDate/> или <birthDate></birthDate> не считается нулевым в соответствии с правилами XSD.

Посмотрите этот отличный блог для дальнейшего чтения.

Ответ 2

Добавление моего представления к приведенным выше ответам. Основная вещь, которую многие новички не знают или не принимают во внимание, - это привязка переменной xsi с пространством имен экземпляров схемы.

Например: xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" [добавить это как атрибут в любом месте в открывшемся теге xml].

Префикс атрибута xsi "в этом случае должен быть связан с пространством имен XML http://www.w3.org/2001/XMLSchema-instance". Это связывание может быть выполнено в любом из родительских элементов или в самом корневом элементе. Где делать привязку зависит от области, для которой вы хотите, чтобы xsi был доступен.

  • Все элементы, вложенные в объявление, получают одинаковое значение
  • Даже если вы можете использовать любое имя для привязки именpcae, для краткости всегда рекомендуется использовать xsi для " http://www.w3.org/2001/XMLSchema-instance"

PS: Я осознал всю важность связывания пространства имен xml и префиксов атрибутов везде, где это необходимо, когда я изо всех сил пытался работать, оставаясь на 3 дополнительных часа, чтобы понять, почему мой xml node не получает подтверждения от xsd даже в случай атрибута nillable, присутствующего в определении схемы.

Ответ 3

если MinOccurs 0 и nillable true не позволяют нам устанавливать нулевые значения, то какие параметры должны быть установлены в поля как нулевые и необязательные?