Waving Particles
Reading the discussion by stpeter and hildjj, I can't help wondering if we aren't re-inventing XML all over again. So, I wanted to throw the following into the discussion:
<x xmlns="jabber:x:data" xmlns:xdata="jabber:x:data" type="form">
<s:light xmlns:s="http://jabber.org/protocol/shakespeare"
xdata:type="list-multi">
<option label="Juliet">Sun</option>
<option label="Maid">Moon</option>
<option label="Eyes">Stars</option>
</s:light>
<author xmlns="http://www.loc.gov" xdata:type="text-single">
Shakespeare
</author>
</x>
As, can be seen, I annotate the child elements in the form with the xdata:type attribute. This is an extension to Data Forms. The following example is equivalent to the previous one, but uses a different annotation with respect to namespaces:
<xdata:x xmlns:xdata="jabber:x:data" type="form">
<light xmlns="http://jabber.org/protocol/shakespeare"
xdata:type="list-multi">
<xdata:option label="Juliet">Sun</xdata:option>
<xdata:option label="Maid">Moon</xdata:option>
<xdata:option label="Eyes">Stars</xdata:option>
</light>
<author xmlns="http://www.loc.gov" xdata:type="text-single">Shakespeare</author>
</xdata:x>
Note:
XML attributes, without a prefix, don't belong to any namespace, but depend on the containing element for providing their context. So, although the default namespace in the second version is jabber:x:data, this isn't inherited for attributes.