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

Valider XML Discussion :

Erreur "Cannot find declaration of element" [XSD]


Sujet :

Valider XML

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut Erreur "Cannot find declaration of element"
    Salut,

    je débute avec xml et xsd, j'ai quelques soucis, notamment au niveau de l'en-tête. J'espérais que vous puissiez me filer un coup de main

    J'ai ce fichier XML qui est donné.

    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
    <films xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://www.example.com/films/v2"
     xsi:schemaLocation="http://www.example.com/films/v2 Exo3_FilmProvider.xsd">
         <realisateur id_realisateur="real_01">
            <prenom>Martin</prenom>
            <nom>Scorsese</nom>
        </realisateur>
        <realisateur id_realisateur="real_02">
            <prenom>Quentin</prenom>
            <nom>Tarantino</nom>
        </realisateur>
        <realisateur id_realisateur="real_03">
            <prenom>Steven</prenom>
            <nom>Spielberg</nom>
        </realisateur>
        <film id_film="film_01" id_realisateur="real_03" annee="2001">
            <titre>Minority Report</titre>
            <resume>
                <text>Un homme est victime d'une machination. Il est pris au piège d'un système qu'il a l'habitude de contrôler.</text>
            </resume>
        </film>
        <film id_film="film_02" id_realisateur="real_02" annee="2003">
            <titre>Kill Bill</titre>
            <resume>
                <text>Une femme se venge des personnes qui ont voulu l'assassiner.</text>
            </resume>
        </film>
        <film id_film="film_03" id_realisateur="real_01" annee="1995">
            <titre>Casino</titre>
            <resume>
                <text>Le monde de la mafia italienne mêlé à celui des casinos...</text>
            </resume>
        </film>
        <film id_film="film_04" id_realisateur="real_01" annee="1990">
            <titre>Les affranchis</titre>
            <resume>
                <text>Inspiré d'un fait réel : histoire de mafia italienne.</text>
            </resume>
        </film>
    </films>
    J'ai donc écris un fichier XSD correspondant

    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
     
    <?xml version="1.0" encoding="utf-8"?>
    	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
     	<xsd:element name="films">
     		<xsd:complexType>
     			<xsd:sequence>
     				<xsd:element name="realisateur">
     					<xsd:complexType>
     						<xsd:sequence>
     							<xsd:element name="prenom" type="xsd:string"/>
     							<xsd:element name="nom" type="xsd:string"/>
     						</xsd:sequence>
     						<xsd:attribute name="id_realisateur" type="xsd:string"/>
     					</xsd:complexType>
     				 </xsd:element>
     				 <xsd:element name="film">
     					<xsd:complexType>
     						<xsd:sequence>
     							<xsd:element name="titre" type="xsd:string"/>
     							<xsd:element name="resume">
     								<xsd:complexType>
     									<xsd:sequence>
     										<xsd:element name="text" type="xsd:string"/>
     									</xsd:sequence>
     								</xsd:complexType>
     						 	</xsd:element>
     						 </xsd:sequence>
     						 <xsd:attribute name="id_film" type="xsd:string"/>
                             <xsd:attribute name="id_realisateur" type="xsd:string"/>
                             <xsd:attribute name="annee" type="xsd:int"/>
     					</xsd:complexType>
     				</xsd:element>	
     			 </xsd:sequence>
     		</xsd:complexType>
     	</xsd:element>	
    </xsd:schema>

    Mon fichier xsd ne m'indique pas d'erreur, mais le fichier xml si.

    Cannot find declaration of element films
    Referenced file Exo3_FilmProvider.xsd containts error
    Sauf que je déclare bien films et l'ide ne me montre pas d'erreur.

    Du coup je suis un peu perdu avec tout ça =)

    Merci de votre aide.

  2. #2
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    Dans ton XSD, voila ce que tu demandes :

    "J'ai une balise parent 'films' qui ne peut contenir qu'un seul realisateur et un seul film"

    A priori ce n'est pas ce que tu veux d'après ton XML, mais "J'ai une balise parent 'films' qui ne peut contenir plusieurs realisateurs et plusieurs films"
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Pourtant j'utilise bien séquence pour dire que je peux avoir plusieurs réalisateur ou film .

  4. #4
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    [1]
    Cannot find declaration of element films
    Referenced file Exo3_FilmProvider.xsd containts error
    La seule et unque raison est que le schéma ainsi écrit serait pour valider un xml du genre sans un (défaut) namespace déclaré, ce qui n'est pas le cas: l'engin cherche en vain une définition de {http://www.example.com/films/v2}films pour commencer, et il ne l'a pas trouvé. Il faut définir le targetNamespace dans le schéma.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/films/v2" elementFormDefault="qualified">

    [2] Une fois c'est fait, il faut s'en occuper le facet dit cardinalité. Le defaut de maxOccurs est 1, même minOccurs. Ce n'est certainement le cas pour realizateur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsd:element name="realisateur" maxOccurs="unbounded">
    Et le même pour film.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsd:element name="film" maxOccurs="unbounded">

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Merci beaucoup, effectivement, maintenant cela fonctionne !

    Il va falloir que je me penche un peu plus en détail sur la partie des namespace pour mieux comprendre la syntaxe de l'en-tête.

    Merci encore !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/05/2016, 10h04
  2. Réponses: 0
    Dernier message: 16/03/2012, 20h59
  3. [DOM] Sax Exception: 'cvc-elt.1: Cannot find the declaration of element 'site:blog'
    Par laurent_m dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 05/03/2009, 22h52
  4. Erreur : "Could not find default endpoint element that references contract"
    Par obitskater dans le forum Windows Communication Foundation
    Réponses: 0
    Dernier message: 27/02/2009, 10h30
  5. Réponses: 4
    Dernier message: 25/04/2006, 11h47

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