xml – nillable和minOccurs XSD元素属性

我来回设置元素为minOccurs =“0”和nillable =“true”。

我正在阅读this文章,现在在我的WSDL我不知道如果使用两者是值得的。本文给出了一个很好的例子,表示可能有空值散布在其中的数组,因为这不能用minOccurs =“0”来完成。现在,我一直在使用的约定是,如果一个元素不是可选的,它不是nillable。
根据我的理解,我的问题在于,通过应用nillable属性到一个元素的差异,我说你可以传递一个空值的XSD等价物?否则,一个没有nillable属性的元素,必须有一个值限制在它上面吗?

您需要决定是否将XML视为XML,或者您是否正在考虑将XML作为从这里传输Java(或其他)对象的方式。

在XML中,nillable允许构造< myelement xsi:nil ='true'/>作为显式缺失值的指示符,如SQL NULL。这在语义上不同于仅仅< myelement /&gt ;.两者都不同于一切。所以,当看看XML,你必须区分四种情况:

<!-- nothing -->
<myElement attr1='true'>some content</myElement>
<myElement/>
<myElement xsi:nil='true'/>

如果,另一方面,你主要关注Java – 也许是因为你使用SOAP,那么你需要考虑Java对象如何来回映射。

对于从Object继承的任何Java项目,JAXB和其他映射技术都需要一种处理空值的方法。 Nillable是做到这一点的方式。如果你禁止在可以是一个对象的东西,工具包会恼人地使用数组来找到一种方式来表示缺席。

另一方面,如果你有一个数组,请记住数组本身是一个对象,并且可以为null。因此,每个工具包都必须区分零元素数组和null。

另一方面,如果你有一个原始类型(例如int),nillable将导致问题,因为没有从xsi:nil到原语的映射。

http://stackoverflow.com/questions/1903062/nillable-and-minoccurs-xsd-element-attributes

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:xml – nillable和minOccurs XSD元素属性