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 :

Références XSD croisées


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
    Développeur Java
    Inscrit en
    Juin 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2009
    Messages : 102
    Par défaut Références XSD croisées
    Bonjour à tous...

    J'ai un soucis lors de la création d'un schéma pour de la validation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    Source schemaA = new StreamSource(File.class.getResourceAsStream("/xsd/a.xsd"));
    Source schemaB = new StreamSource(File.class.getResourceAsStream("/xsd/b.xsd"));
     
    Schema schema = factory.newSchema(new Source[] {schemaA, schemaB});
    Mon problème, c'est que le schéma A fait référence à un élément du schéma B, et vice versa. Donc, à la création du schema il y a une exception du type :

    org.xml.sax.SAXParseException: src-resolve: Cannot resolve the name 'b:bElement' to a(n) 'type definition' component.
    Ce qui est normal, puisque quand il charge A, B n'est pas encore chargé.

    Vu que je n'ai pas le droit de toucher aux XSD, savez vous comment je peux m'en sortir ? Avoir des références croisées comme ça est-il une aberration, ou alors je n'ai pas bien saisi le problème ?

    Si quelqu'un pouvait m'éclairer

    Merci !

  2. #2
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Juin 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2009
    Messages : 102
    Par défaut
    En complément, je vois que dans un de mes deux XSD, j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xs:import namespace="a" schemaLocation="./a.xsd">
    	<xs:annotation>
    		<xs:documentation>
    			...
    		</xs:documentation>
    	</xs:annotation>
    </xs:import>
    Comme mes schémas sont des ressources de mon projet java, le schemaLocation ne veut rien dire au final ! Cela pose-t-il un problème ?

  3. #3
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Si tu ne peux pas toucher aux XSD alors je ne vois pas comment.

    Voir ce lien a propos des references croissees de XSD


  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Je sais pas si ça peut marcher, mais ça me semble pas impossible en principe.

    Ça me prendrait un peu de temps de faire un testcase, mais une remarque préliminaire :

    Tel que, ton SchemaFactory ne peut pas faire grand-chose pour relier tes deux Sources entre elles. À mon avis, il faudrait leur définir des systemId qui correspondent aux schemaLocations par lesquels elles se référencent l'une l'autre. C'est un minimum.

    Un jour, quand j'aurai le temps, je vérifierai si j'arrive à le faire marcher, mais c'est pas pour tout de suite .
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Juin 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2009
    Messages : 102
    Par défaut
    J'ai pensé aux systemId mais finalement je n'y ai pas vu d'autre intéret que pour le débuggage
    Ou alors je n'ai pas su les paramétrer...

Discussions similaires

  1. [VS2005] Références Web "croisées"
    Par dj_lil dans le forum Framework .NET
    Réponses: 4
    Dernier message: 05/05/2010, 16h49
  2. Réponses: 5
    Dernier message: 21/03/2007, 13h24
  3. [Débutant] Références croisées entre packages
    Par dabeuliou dans le forum Langage
    Réponses: 6
    Dernier message: 05/03/2007, 13h30
  4. effacer des références croisées
    Par jan0 dans le forum Oracle
    Réponses: 3
    Dernier message: 12/10/2006, 11h09
  5. Références croisées d'objets Oracle
    Par cdemedei dans le forum Oracle
    Réponses: 2
    Dernier message: 23/02/2006, 16h33

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