Problem in validation of xml from multiple xsds stored in registry

krishna's picture

Hello,

I have wriite  a mediator for validation, in my schema one <xsd:include>  is also there.

I created two entries in Integrated Registry
Schema/s1/File.xsd -  content of  child schema file
Schema/s1/OutputMessage.xsd -  content of  parent schema file


        Source validateSrc = SynapseConfigUtils.getStreamSource(synCtx.getEntry("Schema/s1/xmlFile"));
        ArrayList<String> schemaKeys = new ArrayList<String>();
        schemaKeys.add("Schema/s1/OutputMessage.xsd"); //parent xsd key from registry

//        schemaKeys.add("Schema/s1/File.xsd"); -  i tried using this also, but it is now working

//  in OutputMessage.xsd - i am tried with giving  "Schema/s1/File.xsd" as schemaLocation in the registry also but still no chance....

               StreamSource[] sources = new StreamSource[schemaKeys.size()];
                int i = 0;
                for (String propName : schemaKeys) {
                    sources[i++] = SynapseConfigUtils.getStreamSource(synCtx.getEntry(propName));
                }
            cachedSchema = factory.newSchema(sources);
            Validator validator = cachedSchema.newValidator();
            System.out.println("===before validate()");
            validator.validate(validateSrc);
            System.out.println("===after validate()");
        } catch (Exception e) {
               e.printStackTrace();
            // TODO: handle exception
               return false;
        }

 

 

I am receivng the following error - essentially it is not resolving the child xsd file.

org.xml.sax.SAXParseException: src-resolve: Cannot resolve the name 'bons0:File'
 to a(n) 'type definition' component.
        at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Un
known Source)
        at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)

 

 

I have the respective files also...

 

 

---Krishna
  
       
 
   

 

 

 

 

indika's picture

It works for me , when I use shemas in a order ...

Hi
I was unable to give some help due to fact that we are really busy due to upcoming releases.

You never want to rewrite a validation mediator. There is a one in synapse (so …wso2 esb). Look at [1]. And if there are any issues or if it is needed to improve, it is great if you can provide patch for improving existing mediator without rewriting a new one.

I have tried your scenario with our existing mediator. You can set multiple schemas as you need using    <schema key="string"/> in validate mediator.

Your scenario works for me when I add schemas in the order File.xsd , OutputMessage.xsd . But, when use reverse order, it doesn’t work (get error what you got). We use JAXP validation API and ‘xerces’ as provider. This may how ‘xerces’ works.

[1] http://synapse.apache.org/Synapse_Configuration_Language.html#validate
Thanks
Indika

krishna's picture

my need is little different

Hello indika and asanka,,,,,
My requirement is little different. I don't want to give all the schema keys using - <schema key="string"/>...because if there are some 20 schema files then i can't give these files as schema keys and with tthat i need to take care of the order also...
 
So what i would like to do is as follows.
I will store all the required schema in the Integrated registry. and then I'll update schenaLocation with registry key of dependant files like-  schemaLocation="REGISTRY_KEY_FOR_DEPENDANT_XSD" for the parent file with the key of child file
Now in  my validation i will give only one schema file and rest of the dependant files should be resolved automatically by the validator. It is happening in simple java program i ran on file system( with using wso2)...but the same is not happening with wso2. where schema location is registry key.
 
thanks,
Krishna
 
 
 
 
 

Hot Topic
Hot
Topic

Google Gadgets are a nice way to develop user interfaces for distributed services. The fact that they can be hosted anywhere over a network, not necessarily in the very portal server they eventually run in makes them re-usable and allows users to quickly...

Latest Webinar
In this webinar we'll share the range of concerns we've heard from the industry, and survey some of the new and sometimes subtle types of lock-in associated with cloud technologies.
Wednesday, 8 September, 10.00 AM (PDT)