你知道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 />根据架构,它将无效。