IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

Importation de 2 schémas sous le même namespace


Sujet :

Format d'échange (XML, JSON...) Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 206
    Par défaut Importation de 2 schémas sous le même namespace
    Bonjour à tous

    J'essaie de parser mes schémas xml avec jaxb et je vais de bug en bug... Mon souci actuel est que j'ai 2 schémas que je regroupe sous le même namespace. Dans un 3ème, j'importe les 2 premiers et j'essaie d'utliser les types que j'ai définis dans chacun d'eux. Et c'est la que vient le problème: jaxb refuse d'utiliser les types de la 2ème importation!

    Je vous montre un exemple qui illustre mon propos:

    schema 'AA.xsd':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="A">
        <xs:simpleType name="AAtype">
            <xs:restriction base="xs:string"/>
        </xs:simpleType>
    </xs:schema>
    schema 'AB.xsd' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="A">
        <xs:simpleType name="ABtype">
            <xs:restriction base="xs:string"/>
        </xs:simpleType>
    </xs:schema>
    schema 'B.xsd' qui importe et utilise les 2 premiers:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="B" xmlns="B" xmlns:a="A">
        <xs:import namespace="A" schemaLocation="AA.xsd"/>
        <xs:import namespace="A" schemaLocation="AB.xsd"/>
        <xs:complexType name="Batype">
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute name="att" type="a:AAtype"/>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
        <xs:element name="toto" type="Bbtype"/>
         <xs:complexType name="Bbtype">
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute name="att" type="a:ABtype"/>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
        <xs:element name="titi" type="Bbtype"/>   
     
    </xs:schema>
    Et donc ici, quand j'exécute la commande 'xjc B.xsd', il en ressort l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cannot resolve the name 'a:ABtype' to a(n) 'type definition' component.
      line 16 of file:/tmp/try/essai/B.xsd
    Donc il ne voit pas le type défini dans le 2ème schéma importé. Je précise que si jamais j'inverse l'ordre des import de AA.xsd et AB.xsd, donc si je fais ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xs:import namespace="A" schemaLocation="AB.xsd"/>
    <xs:import namespace="A" schemaLocation="AA.xsd"/>
    Cette fois ci le code d'erreur est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cannot resolve the name 'a:AAtype' to a(n) 'simpleType definition' component.
      line 9 of file:/tmp/try/essai/B.xsd
    Donc on voit bien qu'il n'effectue que la première importation des schémas.

    Pourriez-vous m'expliquer pourquoi on ne peut pas importer et utiliser 2 schémas définissant des types dans le même namespace avec jaxb ? Ca m'embête beaucoup d'utiliser des namespaces différents à chaque fois, j'ai beaucoup de fichiers et mon architecture est déjà faite. En plus tout est valide avec l'éditeur oxygen, je ne comprend pas pourquoi jaxb pinaille

    Merci d'avance à tous

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Par défaut
    Bonjour,
    pourquoi ne pas avoir deux noms de namespace différent du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="B" xmlns="B" xmlns:a1="A1" xmlns:a2="A2">
        <xs:import namespace="A1" schemaLocation="AA.xsd"/>
        <xs:import namespace="A2" schemaLocation="AB.xsd"/>
        <xs:complexType name="Batype">
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute name="att" type="a1:AAtype"/>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
        <xs:element name="toto" type="Bbtype"/>
         <xs:complexType name="Bbtype">
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute name="att" type="a2:ABtype"/>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
        <xs:element name="titi" type="Bbtype"/>   
     
    </xs:schema>
    Cela éviterait la confusion. Quand j'utilise deux namespace différents, j'utilise des noms différents (et des targetnamespace plus typés qu'une simple lettre).
    Je pense que si cela fonctionne avec oxygen, c'est qu'il est plus permissif.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 206
    Par défaut
    Bonjour et merci de ta réponse, effectivement ça fonctionne avec deux namespaces différents mais je souhaitais savoir si ça fonctionnait avec le même. En fait je suis un peu tributaire de ces fichiers xml, qui sont déjà utilisés par un autre programme. C'est pour ça que je ne peux pas trop les modifier a ma guise.

    Je ne sais pas comment je vais faire du coup

Discussions similaires

  1. Changer d'utilisateur sous un même schéma oracle 9i
    Par saigon dans le forum Sql Developer
    Réponses: 2
    Dernier message: 18/09/2008, 10h19
  2. importer les include linux sous windows ?
    Par cscheater dans le forum Windows
    Réponses: 3
    Dernier message: 11/01/2006, 20h44
  3. Foreign key entre 2 schémas d'une même BD?
    Par mona dans le forum Oracle
    Réponses: 2
    Dernier message: 14/10/2005, 19h58
  4. Regrouper des fichiers sous un même nom
    Par Azharis dans le forum C++
    Réponses: 7
    Dernier message: 22/06/2005, 12h05
  5. PB d'import avec les ActiveX sous BCB6
    Par dergen dans le forum C++Builder
    Réponses: 4
    Dernier message: 29/11/2002, 10h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo