tags:

views:

1406

answers:

3

I have an xml and it has nodes with i:nil="true" in it. What does that mean?

For example:

<FirstName i:nil="true" />

Does that mean something different than:

<FirstName />

If so, what is the difference?

+2  A: 

nil is an attribute, defined in the i namespace. For this FirstName node, the attribute has the value true.

It's similar to this, just with different names and values:

<form name="test">...

Here, form is the name of the node, similar to FirstName from your code, and name is an attribute with a value of "test", similar to your attribute nil with a value of "true".

What this means depends on the application reading the xml document.

If I were to venture a guess, I'd say that this looks like part of a xml document defining some kind of schema, and that the FirstName field can have a NULL or nil value, meaning empty, or unknown.

Lasse V. Karlsen
+4  A: 

This means FirstName is null

<FirstName i:nil="true" />

This means FirstName = ""

<FirstName />

Assumption made on FirstName is of string type.

codemeit
Agreed. I've seen this before. +1
Andrew Rollings
According to which standard? If FirstName was "", the document would be <FirstName></FirstName>, which is not the same as <FirstName /> (the former is not canonicalized to the latter.)
Torsten Marek
<FirstName></FirstName> === <FirstName />
codemeit
+2  A: 

Maybe i:nil actually means xsi:nil, this means that the FirstName element is empty, i.e. does not have any content -- not even "". It refers to the nillable property in XML Schema.

Torsten Marek