 <p>First, on the formal question: does the <code>form</code> attribute actually add to the expressivity of XSD? I think so: with the <code>form</code> attribute I can write types whose sets of valid instances cannot (as far as I can see) be matched by any type written without using the <code>form</code> attribute. </p> <p>For example (in a schema which defines a top-level element named <code>a</code> of type <code>duration</code>):</p> <pre><code>&lt;choice maxOccurs="unbounded"&gt; &lt;element form="qualified" name="a" type="integer"/&gt; &lt;element form="unqualified" name="a" type="gYear"/&gt; &lt;/choice&gt; </code></pre> <p>Then, on the less formal question: why would anyone bother?</p> <p>The short answer is: because for each possible way of choosing among qualified and unqualified names for local elements and attributes, some people think that that is the right way to declare local elements and/or attributes.</p> <p>A longer answer will take a little time. Sit down, get yourself a cup of coffee. </p> <p>There are two schools of thought on local elements; both were represented in the working group that designed XSD.</p> <p>One school of thought believes that if element P is in namespace N, and element C is local to the type of element N:P, then it is only natural that the child element should be named N:C. It is, after all, part of the same vocabulary as P, and identifying the vocabulary is what namespaces are all about. From your final question, I guess you lean toward this way of seeing things.</p> <p>The other school of thought reasons that local elements are like local attributes. An attribute local to (the type of) element N:P is named A, not N:A -- the name N:A denotes, by definition, an attribute global to namespace N, not local to element N:P. By analogy, local children should also use unqualified names, so that attributes and child elements are treated in similar ways.</p> <p>The presence of the <code>form</code> attribute on XSD element and attribute declarations might suggest the possible existence of a third school of thought, characterized by a desire to treat the choice between qualified and unqualified names as a design choice to be taken individually for each local element or attribute, and not necessarily in a single vocabulary-wide edict. For what it's worth, this third school of thought doesn't actually seem to exist. At least, I don't think I've ever encountered a member. No one ever seems to set out to write complex types of the kind exhibited above with mixtures of qualified and unqualified local names. The essential function of the <code>form</code> attribute is not to allow different local elements to be qualified or unqualified, but to have its default set by the <code>elementFormDefault</code> and <code>attributeFormDefault</code> attributes on the enclosing schema element, thus ensuring that even if schema authors are somehow stuck with the wrong values for those attributes, they can still get the effect they desire.</p> <p>I have also never (that I know of) encountered any member of either of the first two schools of thought who could feel any sympathy at all for the reasoning of the other school. That anyone could think the way the members of the other school of thought think has pretty much always come as an unwelcome surprise. With a little effort, smart people of good will find it possible to accept the existence of the other school of thought, and even (with a little more effort) to accept that the members of that school of thought are arguing in good faith, and are not just trying to gum up the works. The variety of views has anthropological interest at best (look at the very odd things people can claim to believe even when otherwise they seem mostly like more or less rational beings! Funny old world, isn't it?). After some months of deadlock most members of the working group were forced to admit to themselves that they just were not going to be able to persuade the other guys to see the error of their ways.</p> <p>It then became clear that pretty much everyone in the WG had the same ranking for the three possibilities we could think of:</p> <ol> <li>Define things the way I think is right.</li> <li>Define things so that the schema author must make the choice.</li> <li>Define things the way the other guys think is right. </li> </ol> <p>Everyone liked the first choice (for suitable values of "I"), but for different WG members "the way I think is right" turned out to denote different things.</p> <p>No one much liked the second choice, since it makes the schema author's life harder and leads to less consistency in the universe of schemas. </p> <p>But everyone hated the third choice (being forced to do things the way the other guys wanted) so much that they were willing to accept compromise rather than risk utter defeat.</p>