I gave a workshop to my colleagues on W3C XML schema. The goal of the workshop was to give a foundation of all the stuff in the toolbox so the approach was breadth rather than depth. The illogical and complex notation of W3C XML Schema aside it was going reasonably well until we came to namespaces. Trying to explain the various combinations of using targetNamespace, xmlns and elementFormDefault went over a lot of heads. I believe the problem with namespaces are that we (at least the majority) are by design concrete thinkers. Namespaces are far too abstract. I've offered to do 1 on 1's to clarify. In the interim I need to think of some concrete examples to explain.