From Code Synthesis Wiki

Jump to: navigation, search

On the top page you refer to the "pathologically circular dependencies" within part of the GML schema. Unfortunately I suspect it only gets worse in GML 3.2. This particularly relates to the dependencies between the CRS-related schema and the Metadata schema from ISO 19139. The schema documents for ISO 19139 are available here:

in a bundle that also includes GML 3.2 with the schemaLocation paths all set up to be local/relative paths. Note that this bundle *only* validates as a whole - due to the transitive/circular import and include chains, it is not possible to validate the whole from any place other than either gmd/gmd.xsd or gml/gml.xsd (not quite sure which).

I'd be interested to hear your results/recommendations for whether this works, and what fixes might help?

I can think of only one way to adress this problem: pass the inconvenience to the end user ;-) by generating each class into a separate file, just like Java binding tools do. This is obviously not as clean as mapping xsd:include/xsd:import to CPP #include and, in case of schemas like GML, can result in thousands of files being generated which will lead to longer compilation times, etc. It will also complicate the compiler quite a bit so there is no guarantee if/when we will implement this feature.
I am also not sure of your role in GML 3.2 / ISO 19139: are you working on the standard and looking for ways to make it more compatible with data binding tools or are you trying to use the standard to generate a C++ binding? -- Boris 09:18, 2 October 2006 (EDT)
I am one of the editors of GML 3, and was perhaps primarily responsible for the GML 3.1.1 bugfix release that we had hoped would satisfy the standard processors. I wrote the xml and xsd test files that you used for the Xerces bugfix.
I am also involved peripherally with the ISO 19139 project, and had been feeding fixes to them concerning some of the clumsier constructs. It is too late now to get anything into the official ISO schemas (they are at "FDIS" status and ISO processes are very stately ...) but "corrigenda" are possible if there is something that would obviously make things better.
In fact the main problem is all over on the ISO side. The portions of GML and GMD that cause the trouble are both "directly" derived from UML in ISO 19111 and ISO 19115 respectively, which are both part of the so-called Harmonized Model. The "Harmonized" aspect is that all the UML are maintained as a single model, with all inter-package dependencies built in, circularities and all. --Dr Shorthair 20:36, 3 October 2006 (EDT)
In the latest release of XSD (3.1.0) we have implemented the file-per-type compilation mode and I was able to compile GML 3.1.1 in this mode without any modification. For more information see this blog post. It would be interesting to know whether GML 3.2 can also be compiled in this mode. -- Boris 14:50, 17 February 2008 (EDT)
Personal tools