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

时间:2010-09-21 13:16:17

标签: xml xsi xml-nil

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

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

e.g:

<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意味着什么?

祝你好运

4 个答案:

答案 0 :(得分:13)

您得到此信息,因为您的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

答案 1 :(得分:4)

  

XML Schema:结构引入了一个   发信号通知的机制   元素应该被接受为·有效·   什么时候它没有内容   内容类型不需要或   甚至必然允许空内容。   元素可以是有效的,没有   内容,如果它有属性   xsi:nil,值为true。一个   如此标记的元素必须为空,但是   如果允许,可以携带属性   相应的复杂类型。

来源:http://www.w3.org/TR/xmlschema-1/#xsi_nil

答案 2 :(得分:1)

<a_element />  

相当于empty string并且将对xsd:string呈现有效,但不会对xsd:date,xsd:datetime,xsd:decimal等类型有效。

<a_element xsi:nil="true"/>

null的等价物,并且对于架构定义中具有nillable =“true”的所有元素都有效

答案 3 :(得分:0)

我的理解是他们不一样。 至少如果要根据模式验证xml。 如果在您的模式中将元素定义为nillable,请说:

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

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

<SomeName xsi:nill="true" />

如果你的xml中的元素类似于<SomeName />,那么根据模式它将无效。