分层XML上的Nillable用法?

时间:2011-01-26 19:53:45

标签: xml xsd

如果您拥有如下所示的XML结构:

<xs:complexType name="ContactSuperType">
    <xs:sequence>
        <xs:element name="Details">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="GivenName" type="xs:string" nillable="true"/>
                    <xs:element name="Initials" type="xs:string" nillable="true" minOccurs="0"/>
                    <xs:element name="FamilyName" type="xs:string" nillable="true"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
        <xs:element ref="Address" minOccurs="0"/>
    </xs:sequence>
</xs:complexType>

<xs:element name="Details">也应该<xs:element name="Details" nillable="true">吗?

1 个答案:

答案 0 :(得分:0)

这取决于你。语言中没有规则说明如果一个元素的所有子元素都是可存活的,那么父元素也应该是可存档的。但这可能是您选择遵循的设计实践。这取决于你首先使用xsi:nil的原因。就我个人而言,我从未见过一种情况,我发现它远程有用 - 允许元素为空并允许它不存在已经提供了两种处理缺失数据的方法,我认为不需要第三种方法。