J'ai 3 XSD reliés entre eux:MOXY- XSD multiples importer le même schéma definition- erreur: « élément » est déjà défini
schema1.xsd
imports namespace="x:y:z" schemaLocation= "schemaDefinitions.xsd"
includes schema2.xsd
schema2.xsd
imports namespace="x:y:z" schemaLocation= "schemaDefinitions.xsd"
includes schema3.xsd
schema3.xsd
imports namespace="x:y:z" schemaLocation= "schemaDefinitions.xsd"
Ces XSD sont fournis par une source extérieure et ne peuvent pas être modifiés.
Auparavant, mon projet utilisait JAXB standard avec des classes créées au moment de la compilation. Je change actuellement dynamique JAXB MOXY (exécution) et reçois maintenant l'erreur suivante sur ma ligne DynamicJAXBContextFactory.createContextFromXSD(), qui utilise Schema1.xsd pour FileInputStream:
Exception in thread "main" java.lang.ExceptionInInitializerError at
TestTool.JavaRoot.TestTools.MainTool.main(MainTool.java:55)
Caused by: Exception [EclipseLink-50040] (Eclipse Persistence Services -
2.6.2.v20151217-774c696):
org.eclipse.persistence.exceptions.JAXBException
Exception Description: Error creating DynamicJAXBContext.
Internal Exception: org.xml.sax.SAXParseException; systemId:
file:///public/SITE1/config/schema/SchemaDefinitions.xsd; lineNumber:
xyz; columnNumber: xyz; 'xyz' is already defined
J'ai déterminé la cause est le fait que les trois schémas importent schemaDefinitions.xsd. Si je supprime l'instruction import de schema2 et schema3, l'erreur est résolue. Cette erreur n'était pas présente avec l'implémentation précédente de jaxb et les xsds n'ont pas changé depuis le passage à MOXY.
Questions:
Est-il légal/valable pour les XSD à importer/inclure dans cette façon
Quels sont possibles contournements de travail puisque je ne peux pas modifier les XSD? Peut-être des modifications au fichier xjb de liaisons?
Content que vous ayez réussi à résoudre votre problème. Si jamais vous déterminez une solution qui permet toujours la validation, veuillez mettre à jour votre réponse. Merci. – kjhughes