If the structure (except for the root element) of instance files of Form123.xsd and of Form987.xsd are different (which I suspect), then I would say that, although the schemas are valid, this is VERY BAD practice. In my opinion, there should be a 1:1 relationship between a standard and a namespace, i.e. for each different "standard" (or standard version), there should be a separate namespace. I have even seen the worst case in HL7-v3-XML where totally different standards (with different root elements) all belong to the same namespace - Oh my God ...

J.A.

----- Original Message ----- From: "Radu Preotiuc" <[email protected]>
To: <[email protected]>
Sent: Friday, March 27, 2009 10:56 PM
Subject: Re: Duplicate Global Element Names


Tom,

If the usage pattern is what you are describing, then indeed it seems
that their use of multiple elements with the same QName falls within the
limits of what is allowed in the spec, because two conflicting
definitions are never used in the same document.

In order to handle this with XMLBeans, I would compile SharedTypes.xsd
to a "shared jar", then I would compile each of the top-level Schemas
one at a time, using "shared.jar" and making sure that I use
an .xsdconfig to map each top-level Schema to a different Java package
name to avoid the Java-level conflict you mentioned.

Then, when parsing a file, you have to "know" which of the top-level
Schemas it refers to and use a SchemaTypeLoader with the corresponding
Schema.

It's not as easy as it could be if there were no naming conflicts, but
it should be possible to handle.

Radu

On Fri, 2009-03-27 at 14:44 -0400, Cort, Tom wrote:
Hello,

TIGERS, a standards body that defines data formats for taxes, is defining some new XML schemas in a way that I don't think is valid according the W3C XML Schema Recommendations and I'm not sure how to handle it with XML Beans. I've brought it to their attention several times but they say it isn't an issue. They are defining multiple global elements within the same namespace, but they are defining them in different XSD files. Is this valid? Here's a simplified example of the general design...

* Form123.xsd defines ReturnState root element. Includes SharedTypes.xsd. Namespace www.example.org

* Form987.xsd defines ReturnState root element. Includes SharedTypes.xsd. Namespace www.example.org

* ShareTypes.xsd defines a bunch of common types. Namespace www.example.org

In the sample instance documents, Form123.xml has a schemaLocation attribute pointing to Form123.xsd and Form987.xml has a schemaLocation attribute pointing to Form987.xsd.

When I run './scomp schemadir' (where schemadir is the directory containing Form123.xsd, Form987.xsd, and ShareTypes.xsd) I get duplicate global element name errors. Using the '-allowmdef' option seems to clobber one of the definitions. I could remove Form987.xsd and compile a JAR for Form123 and reverse the process to create a JAR for Form987, but I think the first occurrence of org.example.www.ReturnStateDocument in the classpath would be used by the JVM thus not actually solving my problem.

Is there a way to specify the Java package name for generated sources so that I could do something like this...

if (foobar.getSchemaLocation(xml) == FORM_123) {
org.example.www.Form123.ReturnStateDocument form = org.example.www.Form123.ReturnStateDocument.Factory.parse(xml);
  /* more code here */
} else {
org.example.www.Form987.ReturnStateDocument form = org.example.www.Form987.ReturnStateDocument.Factory.parse(xml);
  /* more code here */
}

Thanks in advance for the help!

--
Tom Cort
Systems Developer
Vermont Department of Taxes


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]





---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to