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 :

Problème de validation avec un Schema et javax.xml.validation


Sujet :

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

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut javax.xml.validation et Schema : impossible de trouver la racine
    Bonjour,

    J'utilise le script trouvé dans la FAQ pour ouvrir un fichier XML avec DOM avant de l'analyser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DocumentBuilderFactory usine = DocumentBuilderFactory.newInstance();
    DocumentBuilder constructeur = usine.newDocumentBuilder();
    File fichier = new File("monFichier.xml");
    Document document = constructeur.parse(fichier);
    Element racine = document.getDocumentElement();
    Comment faire le plus simplement pour contrôler à ce moment là la validité du fichier, selon un Schema ?

    Merci.

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Salut,

    Il me semble que tu peux faire comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	BufferedReader br = new BufferedReader( new FileReader( XMLFileName ) );
    	URL xsdUrl = new File( XSDFileName ).toURL();
    	Adapter.validateXMLagainstSchemaNoNamespace( br, xsdUrl, null );
    K

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut
    Je n'ai pas essayé ta méthode, car j'ai trouvé celle-ci entre temps :

    http://java.sun.com/j2se/1.5.0/docs/...e-summary.html

    Merci de ton aide.

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut
    Alors que ce validateur (http://tools.decisionsoft.com/schemaValidate/) n'indique aucune erreur, Java génère une exception :
    org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'elia-admin'.
    Fichier XML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="UTF-8"?>
    <elia-admin>
     
    	<page label="erreur"/>
     
    	<page label="index">
    		<role>administrateur</role>
    		<role>exploitant</role>
    		<role>gestionnaire</role>
    		<role>superviseur</role>
    	</page>
     
    </elia-admin>
    Schéma
    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
    <?xml version="1.0" encoding="UTF-8" ?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
     
        <xs:element name="elia-admin">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="page" maxOccurs="unbounded">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="role" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
                            </xs:sequence>
                            <xs:attribute name="label" type="xs:string" use="required" />
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
     
    </xs:schema>
    Curieux, non ?

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut
    Je pense que mon Schéma est valide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    moi@machine:~/workspace2/elia-admin/WebContent/WEB-INF$ xmllint --noout "pages.xml" --schema "pages.xsd"
    pages.xml validates
    Le problème doit donc venir du code Java...

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    final Document document;
    final DocumentBuilderFactory usineXml = DocumentBuilderFactory.newInstance();
    final DocumentBuilder constructeur;
     
    // Initialisation du parser XML
     
    try {
     
        constructeur = usineXml.newDocumentBuilder();
     
    } catch (final ParserConfigurationException e) {
     
        throw new FatalException("Problème de configuration du parser XML : " + e.getMessage());
    }
     
    // Ouverture du fichier des rôles
     
    try {
     
        document = constructeur.parse(new File(Constantes.FICHIER_ROLES));
     
    } catch (final IOException e) {
     
        throw new FatalException("Problème à la lecture du fichier XML des rôles : " + e.getMessage());
     
    } catch (final SAXException e) {
     
        throw new FatalException("Problème à l'analyse du fichier XML des rôles : " + e.getMessage());
    }
     
    // Initialisation du validateur
     
    final SchemaFactory usineSchema = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    final Source schemaFile = new StreamSource(new File(Constantes.SCHEMA_ROLES));
    Schema schema;
     
    // Ouverture du schéma
     
    try {
     
    schema = usineSchema.newSchema(schemaFile);
     
    } catch (final SAXException e) {
     
    throw new FatalException("Problème à l'analyse du schéma XSD des rôles : " + e.getMessage());
    }
     
     // Validation du fichier
     
    Validator validateur = schema.newValidator();
     
    try {
     
        validateur.validate(new DOMSource(document));
     
    } catch (IOException e) {
     
    throw new FatalException("Problème à la lecture du schéma XSD des rôles : " + e.getMessage());
     
    } catch (SAXException e) {
     
    throw new FatalException("Problème à la validation du fichier XML des rôles : " + e.getMessage());
    }
    Je continue mes recherches !

  6. #6
    Membre éclairé Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Points : 781
    Points
    781
    Par défaut
    Hello,

    Je ne vais pas pouvoir t'aider, mais par contre, si tu trouve une réponse à ton problème, ca m'interesse, j'ai le même type de soucis (avec le XML /XSD de la FAQ : choice_pour_attributs).

    Et j'utilise le même code que toi :/
    Two beer or not two beer. (Shakesbeer)
    Question technique par MP => poubelle!

Discussions similaires

  1. Problème de validation d'un schema xml avec EMF
    Par totomimi dans le forum Eclipse
    Réponses: 0
    Dernier message: 02/07/2009, 06h26
  2. Réponses: 4
    Dernier message: 25/10/2006, 08h57
  3. [Validation] Valider un XML avec un schema
    Par pmartin8 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 21/09/2006, 21h22
  4. Validation XML avec un schema XSD
    Par eods dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/05/2006, 14h33
  5. Valider un fichier XML avec un Schema
    Par Groove dans le forum Valider
    Réponses: 4
    Dernier message: 09/11/2005, 08h15

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