2012-05-10 2 views
4

J'ai deux fichiers xsd:générer des classes Java à partir de plusieurs XSD avec XJC

base.xsd:

<schema 
    targetNamespace="http://www.myorg.com/base" 
    elementFormDefault="qualified" 
    attributeFormDefault="unqualified" 
    xmlns="http://www.w3.org/2001/XMLSchema"> 
... 
<complexType name="NrmClass"> 
    ... 
</complexType> 
... 
</schema> 

main.xsd est un schéma où l'on veut utiliser un type de base.xsd

<schema 
    targetNamespace="http://www.myorg.com/main" 
    elementFormDefault="qualified" 
    xmlns="http://www.w3.org/2001/XMLSchema" 
    xmlns:xn="http://www.myorg.com/base"> 

<import namespace="http://www.myorg.com/base"/> 
... 
<element> 
    <complexType> 
    <complexContent> 
     <extension base="xn:NrmClass"> 
... 

     </extension> 
    </complexContent> 
    </complexType> 
</element> 
... 
</schema> 

Lorsque je tente de compiler les deux, je reçois l'erreur suivante:

> xjc base.xsd main.xsd 
parsing a schema... 
[ERROR] src-resolve: Cannot resolve the name 'xn:NrmClass' to a(n) 'type definition' component. 
    line 48 of file:/main.xsd 

Quel est le problème ici?

Répondre

5

Vous voulez essayer spécifier le fichier pour le XSD que vous importez, comme dans:

<xsd:import namespace="http://www.myorg.com/base" schemaLocation="base.xsd"/> 

Cela fonctionne bien si vous les gardez côte à côte de toute façon. De cette façon, vous pouvez les compiler en une seule opération.

Si vous souhaitez exécuter xjc séparément (comme s'ils sont construits en tant que modules séparés), vous pouvez utiliser un fichier d'épisodes.

+0

Merci beaucoup! Cela a résolu le problème! – kavai77

Questions connexes