<a_element />和<a_element xsi:nil ="true"/>之间有什么区别?

dar*_*ter 22 xml xsi xml-nil

你知道XML/XSD上的这些标签是否有区别?

<a_element /> and <a_element xsi:nil="true"/>
Run Code Online (Sandbox Code Playgroud)

例如:

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

and

<SpreadCurve>
      <Index>3M</Index>
      <IndexNumber>4587</IndexNumber>
      <BusinessArea />
</SpreadCurve>
Run Code Online (Sandbox Code Playgroud)

这些是等价的吗?

如果我有一个XSD元素:

<xsd:element name="BusinessArea" type="xsd:string"/>
Run Code Online (Sandbox Code Playgroud)

这意味着它默认为xsi:nil ="false".这意味着它不会接受此元素的空值.

我怀疑是,它会接受这个吗?

<BusinessArea />
Run Code Online (Sandbox Code Playgroud)

这对XSD意味着什么?

最好的祝福

YoK*_*YoK 13

你得到这个,因为你的XSD BusinessArea应该定义为nillable ="true".就像是:

<xsd:element name="BusinessArea" nillable="true">
.....
</xsd:element> 
Run Code Online (Sandbox Code Playgroud)

这意味着BusinessArea元素可以具有空值,即空.

如果XML中的元素不包含任何值,则它必须具有属性xsi:nil ="true":

<BusinessArea xsi:nil="true" />
Run Code Online (Sandbox Code Playgroud)

这应该是无效的:

<BusinessArea />
Run Code Online (Sandbox Code Playgroud)

你展示的两个例子不应该是等价的.

检查一下,了解xsi:nil和nillable:

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

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


小智 0

我的理解是它们不一样。至少如果您想根据模式验证 xml 的话。如果在您的架构中您将元素定义为可为空,那么我们说:

<xsd:element name="SomeName" type="xsd:double" nillable="true"/>
Run Code Online (Sandbox Code Playgroud)

您需要在 xml 中明确将该元素设置为 null,如下所示:

<SomeName xsi:nill="true" />
Run Code Online (Sandbox Code Playgroud)

如果您的 xml 中的元素类似于<SomeName />根据架构,它将无效。