do you know if there\'s a difference between these tags on XML/XSD?
and
e.g:
<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.
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
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
<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