2010-12-09 4 views
1

J'essaie de générer des classes Java à partir d'un schéma XSD en utilisant la commande xjc fournie avec JAXB.JAXB: utilise local schemaLocation pour générer des classes Java

Mon schéma ressemble:

<xs:schema xmlns="..." 
      xmlns:ext="http://schemas.myco.com/ext" ... > 
    <xs:import namespace="http://schemas.myco.com/ext" 
      schemaLocation="http://myco.com/schemas/ext.xsd"/> 
    ... 

Le problème est que l'URI schemaLocation n'existe pas et je ne peux pas modifier le fichier XSD. C'est pourquoi le processus de génération échoue avec des erreurs telles que "src-resolve: Impossible de résoudre le nom 'ext: Resource_Type' en un 'composant' définition de type ''.

Existe-t-il un moyen de forcer JAXB à utiliser une copie locale du fichier ext.xsd pendant le processus sans modifier le fichier XSD d'origine?

Répondre

3

Deux solutions possibles:

JAXB Episode fichier: http://weblogs.java.net/blog/2006/09/05/separate-compilation-jaxb-ri-21

ou

Catalogues XML (recherche Google)

+0

Je vous remercie. Je vais essayer les deux. Je ne connaissais pas le premier (j'espère qu'il est compatible avec jaxb2-maven-plugin), et j'ai essayé d'utiliser un catalogue avec une entrée comme "PUBLIC namespace_url local_path" sans aucun succès (tout bon lien dans ce sens?). Merci. –

+0

Selon http://confluence.highsource.org/display/MJIIP/User+Guide votre première alternative proposée semble fonctionner avec maven-jaxb2-plugin. Je posterai mes résultats dès que possible. –

+0

Cela ne fonctionne pas. Je l'ai posé comme une nouvelle question liée à la compilation épisodique ici http://stackoverflow.com/questions/4510818/jaxb-episodic-compilation-with-maven –

Questions connexes