Subject:Chameleon Schema? Author:Nick Locke Date:14 Sep 2007 05:45 AM
I have a set of XSDs organised for re-use (ie common types and elements declared once only, and then imports). My users are complaining at having to specify the many different namespaces in the instance documents - I understand their issues.
I have tried elementFormDefault="unqualified" on all of the schemas but then, at least when I use the Document Wizard to generate sample XML, I still get each schema in a separate namespace.
Next stop was to try a Chameleon approach. Now I get errors in the top level schema as soon as I remove targetNamespace:
file:///c:/xxxxx/XML/TypesXXXX-v1-00a.xsd:64,50: Schema Representation Constraint: Namespace 'http://types.XXXXX.org.uk' is referenced without <import> declaration
This seems to be because some of the simple types defined in the schema make reference (in base="XXXX") to a type defined earlier in the same schema document.
I'm not sure why removing targetNamespace breaks that, but the important thing is how to mend it.
Subject:Chameleon Schema? Author:(Deleted User) Date:17 Sep 2007 11:24 AM
when you use the targetNamespace attribute in a schema, it means that at least all the global elements (i.e. the ones defined as direct child of the xsd:schema element) will be placed in that namespace; if you use elementFormDefault="qualified", also the locally defined elements will be in that namespace. If you decide that namespace handling has to be avoided, you should remove all the targetNamespace attributes from all the schemas, and change the xsd:import into xsd:include.