Xml Schema Profiles 1: code generation tools.
One of the key responsibilities I had at HR-XML was figuring out how our standard schemas would work within existing tools. As time went by, IDEs became more and more compliant to the spec. Then there was growing interest regarding code generators. Specifically, the idea is to generate stub code (or more) from the xml schema that would give you a head start on processing the xml that is valid against it. I'd done some testing and got some feedback on other tools. (An interesting list of data binding tools is here.)
I wanted to revisit this topic in the context of Xml Schema Profiling. Creating a profile of Xml Schema at one point was controversial, witness the former Xml Schema Profile work group activity at WS-I. This ended up being addressed in the W3C Xml Databinding activity now underway.
But we all know that things are rarely 100%. What I'd like to do is examine some of the documentation around what features of Xml Schema are routinely not supported in tools. Is there a sort of Xml Schema Profile consensus? Here I touch base with some of the more common ones:
Xsd.exe, Castor, XMLBeans, JAXB, CodeXS, XSDObjectGen, Systinet, webMethods, Dingo, and Xmlspy.
Here are some of the schema support info publically available (and in no particular order).
I'll start off with a link to an interesting article here on schema usage patterns. Section 3 has a graph outlining the XSD features usage, especially figure 19 and figure 20.
Xml Schema Definition Language Element Binding Support. This is the XmlSerializer class support for Xml Schema. It lists the supported and unsupported features of schema clearly.
This tool builds upon Xsd.exe and makes improvements, corrections etc. So it takes the above profile as a base.
It does not mention a specific profile, but I talked with guy over there and found them very articulate on the topic.
Section 2.3.2 shows structures support (earlier section shows data types).
Claims to support entire spec, although I have not yet tried it.
"XMLBeans fully supports XML schema".
I wasn't able to find anything on this, although there are claims that it supports 100% of the spec. Would love to get others' comments.
"Limited support for 'interesting' schema constructs (choice, substitution groups, complex type restriction, complex type extension using regular expressions). No support for 'questionable' schema constructs (union, redefine)."
Systinet Server for Java, 6.5
The exact profile is not explicit, but it states: "Systinet Server for Java supports the widest set XML schema constructs, including choices, substitution groups, attribute groups etc." Includes support for union, substitutionGroups, and choice.
"Dingo is a schema compiler that supports several different variations of code generation." Can use XmlSerialization or not. Designed to generate JXB style source.
2-2005: "Dingo now handles more edge cases and should be more compliant than .NET XSD." But does not list schema profile.
Again, I could not find an explicit schema profile. I've tested it a bit and found good support among the most common schema constructs, but can't attest yet to the "problem children".
I'll follow up with an analysis of this data in another entry on Schema profiling.
© Copyright 2007 Paul Kiel.
Last update: 9/22/2007; 4:15:27 PM.