What's the difference between and ?

前端 未结 4 1923
耶瑟儿~
耶瑟儿~ 2020-12-31 00:01

do you know if there\'s a difference between these tags on XML/XSD?

 and 

e.g:

<
相关标签:
4条回答
  • 2020-12-31 00:29

    My understanding is that they are not the same. At least if you want to validate the xml against a schema. If in your schema you define the element as nillable, let's say:

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

    You need to explicitly in your xml set that element to null, like this:

    <SomeName xsi:nill="true" />
    

    If in your xml the element is like <SomeName /> it will not be valid according to the schema.

    0 讨论(0)
  • 2020-12-31 00:49

    XML Schema: Structures introduces a mechanism for signaling that an element should be accepted as ·valid· when it has no content despite a content type which does not require or even necessarily allow empty content. An element may be ·valid· without content if it has the attribute xsi:nil with the value true. An element so labeled must be empty, but can carry attributes if permitted by the corresponding complex type.

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

    0 讨论(0)
  • 2020-12-31 00:50

    You get this as your XSD BusinessArea should be defined as nillable="true". Something like:

    <xsd:element name="BusinessArea" nillable="true">
    .....
    </xsd:element> 
    

    What this mean is that BusinessArea element can have null value i.e. empty.

    And if element in XML doesn't contain any value then it must have attribute xsi:nil="true":

    <BusinessArea xsi:nil="true" />
    

    This should be invalid :

    <BusinessArea />
    

    Two examples you showed should not be equivalent.

    Check this out for understanding xsi:nil and nillable:

    http://www.zvon.org/xxl/XMLSchemaTutorial/Output/ser_over_st0.html

    http://www.w3.org/TR/xmlschema-0/#Nils

    0 讨论(0)
  • 2020-12-31 00:51
    <a_element />  
    

    is the equivalent of an empty string and will render valid against xsd:string, but not against types like xsd:date, xsd:datetime, xsd:decimal etc.

    <a_element xsi:nil="true"/>
    

    is the equilalent of null and will render valid for all elements which have nillable="true" in the schema-definition

    0 讨论(0)
提交回复
热议问题