Подтвердить что ты не робот

Какая разница между <a_element/ "> и <a_element xsi: nil =" true "/" >?

Знаете ли вы, существует ли разница между этими тегами в XML/XSD?

<a_element /> and <a_element xsi:nil="true"/>

например:

<SpreadCurve>
      <Index>3M</Index>
      <IndexNumber>4587</IndexNumber>
      <BusinessArea xsi:nil="true" />
</SpreadCurve>

and

<SpreadCurve>
      <Index>3M</Index>
      <IndexNumber>4587</IndexNumber>
      <BusinessArea />
</SpreadCurve>

Являются ли эти эквивалентными?

Если у меня есть элемент XSD:

<xsd:element name="BusinessArea" type="xsd:string"/>

это означает, что он по умолчанию xsi: nil = "false". И это означает, что он не примет нулевое значение для этого элемента.

Я сомневаюсь, примет ли он это?

<BusinessArea />

Что это значит для XSD?

С наилучшими пожеланиями

4b9b3361

Ответ 1

Вы получаете это, так как ваш XSD BusinessArea должен быть определен как nillable = "true". Что-то вроде:

<xsd:element name="BusinessArea" nillable="true">
.....
</xsd:element> 

Это означает, что элемент BusinessArea может иметь нулевое значение, то есть пустое.

И если элемент в XML не содержит никакого значения, то он должен иметь атрибут xsi: nil = "true":

<BusinessArea xsi:nil="true" />

Это должно быть недействительным:

<BusinessArea />

Два примера, которые вы показали, не должны быть эквивалентными.

Проверьте это для понимания xsi: nil и nillable:

http://www.zvon.org/xxl/XMLSchemaTutorial/Output/ser_over_st0.html

http://www.w3.org/TR/xmlschema-0/#Nils

Ответ 2

XML-схема: структуры создают механизм сигнализации о том, что элемент должен быть принят как · действительный · когда он не имеет содержания, несмотря на тип содержимого, который не требует или даже обязательно разрешить пустое содержимое. Элемент может быть · действительным · без содержимое, если оно имеет атрибут xsi: nil со значением true. элемент, помеченный таким образом, должен быть пустым, но может переносить атрибуты, если это разрешено соответствующий сложный тип.

Источник: http://www.w3.org/TR/xmlschema-1/#xsi_nil

Ответ 3

<a_element />  

является эквивалентом empty string и будет выдавать действительные строки xsd: string, но не для таких типов, как xsd: date, xsd: datetime, xsd: decimal и т.д.

<a_element xsi:nil="true"/>

является эквивалентом null и будет отображаться для всех элементов, которые имеют nillable = "true" в определении схемы

Ответ 4

Я понимаю, что они не то же самое. По крайней мере, если вы хотите проверить xml на схему. Если в вашей схеме вы определяете элемент как nillable, скажем:

<xsd:element name="SomeName" type="xsd:double" nillable="true"/>

Вам нужно явно указать в вашем xml, что этот элемент равен null, например:

<SomeName xsi:nill="true" />

Если в вашем xml элемент похож на <SomeName />, он не будет действителен в соответствии с схемой.