I have two XML Schemas. First (
A.xsd) is located in a library jar file (
mylib.jar) and the second one (
B.xsd) is in my project.
I want to import
A.xsd into the
B.xsd and validate incoming XML via
Jaxb2Marshaller embedded validator.
However I'm unable to make it work properly: it seems that inner XML validator of
Jaxb2Marshaller does not understand references to files in jar-files (I just want to write something like
<xs:import namespace="http://my/schema.xsd" schemaLocation="classpath:schema.xsd">).
How it could be fixed? How could library schema be referenced from a project schema?Answer1:
Check out my answer to a previous question on how a ResourceResolver can be used to solve this problem:<ul><li><a href="https://stackoverflow.com/questions/3558333/jaxb-schemafactory-source-order-must-follow-import-order-between-schemas/3558845#3558845" rel="nofollow">JAXB SchemaFactory source order must follow import order between schemas?</a></li> </ul>
Your implementation of LSResourceResolver will handle loading the schema from the classpath and converting it to the appropriate result.Answer2:
You will need to configure your own resolver. Nothing in jaxb will use classpath:.
There is a JAXB sample which shows this sort of thing.Answer3:
classpath: is not a valid url for schema location. You will have to use <a href="http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/1.6/jaxb/catalog.html#ctrlresolver" rel="nofollow">XML catalogs</a> to load schemas from jars.