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

Valider XML Discussion :

urn non existant


Sujet :

Valider XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    mai 2002
    Messages
    822
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2002
    Messages : 822
    Points : 98
    Points
    98
    Par défaut urn non existant
    Bonjour,

    Je travaille à la validation .xsd d'un fichier xml.

    La fonction Validate utilisée est la suivante

    Code C# : 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
     
     
    private static void Validate(string fluxXML, XmlSchemaSet schemaSet)
            {
                int CompteurNoeuds = 0;
     
                vreader = null;
     
                try
                {
                    Console.WriteLine("\r\nValidation du fichier XML {0}...", fluxXML.ToString());
     
                    _logger.Debug("\r\nValidation du fichier XML {0}..." + fluxXML.ToString());
     
                    XmlReaderSettings settings = new XmlReaderSettings();
     
                    settings.Schemas.Add(schemaSet);
                    settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
                    settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
                    settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation;
                    settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
     
                    settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
                    settings.ValidationType = ValidationType.Schema;
     
                    using (var sr = new StringReader(fluxXML))
                    {
                        //Create the schema validating reader.
                        vreader = XmlReader.Create(sr, settings);
     
                        while (vreader.Read())
                        {
                            CompteurNoeuds++;
     
                            _logger.DebugFormat("Validation terminée");
                        }
     
                        //Close the reader.
                        vreader.Close();
     
                        //la variable nomNoeud est affectée dans la méthode ValidationCallBack appelée quand une erreur se produit.
                        //si nomNoeud est == null=> pas d'erreur de validation
     
                        if (nomNoeud == null)
                        {
                            _logger.Debug("Le fichier est conforme aux fichiers .XSD");
                        }
                        else
                        {
                        }
                    }
                }
                catch (Exception ex)
                {
                    _logger.Fatal("Erreur à l'extraction d'une affaire de l'enveloppe de type DEDistributionType  " + ex.Message + ex.StackTrace);
                }
            }

    Et la fonction ValidationCallback liée est la suivante
    Code C# : 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
     
     
     private static void ValidationCallBack(object sender, ValidationEventArgs args)
            {
                nomNoeud = null;
                valeurNoeud = null;
     
                if (args.Severity == XmlSeverityType.Warning)
                {
                    nomNoeud = vreader.Name;
     
                    valeurNoeud = vreader.Value;
     
                    _logger.Fatal("\tWarning: Matching schema not found.  No validation occurred." + args.Message);
                }
                else
                {
                    nomNoeud = vreader.Name;
     
                    valeurNoeud = vreader.Value;
     
                    _logger.Fatal("\tErreur de validation : " + args.Message);
     
                    _logger.Fatal("Le nom de noeud est " + nomNoeud);
     
                    _logger.Fatal("La valeur de noeud est " + valeurNoeud);
     
                    _logger.Fatal("les informations de schema sont " + vreader.SchemaInfo);
                }
            }
    le message d'erreur reçu est le suivant

    [08:31:11] [DBG] [Paris.ConnecteurPFE.MqAffaireManager.ServiceReceptionAffaire] Validation terminée
    [08:31:18] [FTL] [Paris.ConnecteurPFE.MqAffaireManager.ServiceReceptionAffaire] Erreur de validation : L'élément 'urn:plar:affaire' n'est pas déclaré.
    [08:31:19] [FTL] [Paris.ConnecteurPFE.MqAffaireManager.ServiceReceptionAffaire] Le nom de noeud est affaire
    [08:31:20] [FTL] [Paris.ConnecteurPFE.MqAffaireManager.ServiceReceptionAffaire] La valeur de noeud est
    [08:31:53] [FTL] [Paris.ConnecteurPFE.MqAffaireManager.ServiceReceptionAffaire] les informations de schema sont System.Xml.XsdValidatingReader
    [

    Le fichier Xml présente en effet un noeud affaire qui est le suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <affaire xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:plar">
    L'urn Plar n'existe pas, si j'ai bien compris.
    Les informations concernant l'objet affaire sont dans le fichier nommé plar_V06_import.xsd.
    Dans ce fichier , on trouve les informations suivantes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version = "1.0" encoding = "UTF-8"?>
    <!-- PLAR -->
    <schema xmlns = "http://www.w3.org/2001/XMLSchema"
    		xmlns:xs="http://www.w3.org/2001/XMLSchema"
    		xmlns:xal="urn:oasis:names:tc:emergency:edxl:ciq:1.0:xal"
    		elementFormDefault = "qualified"
    		attributeFormDefault = "unqualified"
    		version = "0.6">
     
     
    <xs:import namespace="urn:oasis:names:tc:emergency:edxl:ciq:1.0:xal"
    	schemaLocation="./EDXL/edxl-de-v2.0-csprd01/schema/other-supporting-schema/EDXLCT_wd05/edxl_xAL.xsd"/>

    Merci beaucoup de bien vouloir m'aider sur ce point car je "tourne en rond".

    Bien cordialement.

    new_wave
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. [SHADOKS]

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    octobre 2011
    Messages
    1 343
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 343
    Points : 2 372
    Points
    2 372
    Par défaut
    Au minimum, le schéma manque une précision sur le targetNamespace.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <schema xmlns = "http://www.w3.org/2001/XMLSchema"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xal="urn:oasis:names:tc:emergency:edxl:ciq:1.0:xal"
    targetNamespace="urn:plar"
    elementFormDefault = "qualified"
    attributeFormDefault = "unqualified"
    version = "0.6">
    ps: Faites attention aux simileys, sélectionez "Désactiver les smileys dans le message". On ne peut pas lire exactement avec similey, et là je peux seulement deviner en le remplaçant par :x.

Discussions similaires

  1. [XSLT] Xml validé XSD puis transformé via XSLT
    Par cash3000 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 16/06/2006, 12h09
  2. Réponses: 7
    Dernier message: 11/02/2006, 15h32
  3. Réponses: 6
    Dernier message: 10/02/2006, 13h46
  4. Réponses: 9
    Dernier message: 17/03/2005, 09h20

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