你知道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意味着什么?
祝你好运
答案 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
答案 1 :(得分:4)
XML Schema:结构引入了一个 发信号通知的机制 元素应该被接受为·有效· 什么时候它没有内容 内容类型不需要或 甚至必然允许空内容。 元素可以是有效的,没有 内容,如果它有属性 xsi:nil,值为true。一个 如此标记的元素必须为空,但是 如果允许,可以携带属性 相应的复杂类型。
答案 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 />
,那么根据模式它将无效。