I ha开发者_JAVA技巧ve 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?
Check out my answer to a previous question on how a ResourceResolver can be used to solve this problem:
- JAXB SchemaFactory source order must follow import order between schemas?
Your implementation of LSResourceResolver will handle loading the schema from the classpath and converting it to the appropriate result.
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.
classpath: is not a valid url for schema location. You will have to use XML catalogs to load schemas from jars.
精彩评论