The xsd is picked up by Tuscany and it is passed to the
SchemaFactory.newSchema() method. Now we have two XSDs, one from
assembly-xsd (tuscany-sca-1.1.xsd which includes other xsds) and the other
is binding-jsonp.xsd.
SchemaFactory.newSchema is keeping a cache based on target namespaces. When
the binding-jsonp.xsd is loaded, there is already entries from
tuscany-sca-1.1.xsd that has the same namespace (tuscany namespace) and
binding-jsonp.xsd is ignored.
We can fix the problem as follows:
For all the Source passed to newSchema(), we read the targetNamespace first
and group the XSDs by tns. If we see multiple files have the same namespace,
then we generate a façade XSD that includes the original XSDs.
Thanks,
Raymond
--------------------------------------------------
From: "ant elder" <[email protected]>
Sent: Sunday, August 09, 2009 3:59 AM
To: <[email protected]>
Subject: Re: Adding xsd's for scheme validation of extensions
On Sat, Aug 8, 2009 at 5:33 PM, Raymond Feng<[email protected]> wrote:
You can plug it in using
META-INF/services/org.apache.tuscany.sca.contribution.processor.ValidationSchema.
Each text line in the file can point to an XSD using its resource name.
We
might need to tweak the following method so that xsd:import/xsd:include
across modules can work. I can help to fix it if you see problems.
org.apache.tuscany.sca.contribution.processor.DefaultValidatingXMLInputFactory.resolveResource(String,
String, String, String, String)
Ok i've started trying this using the JSONP binding to try it out in
r802514. There must be something else going on as it doesn't seem to
have made much difference, the testcase in binding-jsonp-runtime runs
without producing any scheme validation error message both before and
after that change when the .composite is as is or changed to have
extra unused attributes added to the binding.jsonp element.
...ant