1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2011
    Messages
    674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2011
    Messages : 674
    Points : 344
    Points
    344

    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
    168
    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 : 168
    Points : 239
    Points
    239

    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
    Étudiant
    Inscrit en
    août 2011
    Messages
    674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2011
    Messages : 674
    Points : 344
    Points
    344

    Par défaut

    Pourtant j'utilise bien séquence pour dire que je peux avoir plusieurs réalisateur ou film .

  4. #4
    Membre chevronné
    Inscrit en
    octobre 2011
    Messages
    1 085
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 085
    Points : 1 880
    Points
    1 880

    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
    Étudiant
    Inscrit en
    août 2011
    Messages
    674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2011
    Messages : 674
    Points : 344
    Points
    344

    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, 11h04
  2. Réponses: 0
    Dernier message: 16/03/2012, 21h59
  3. Réponses: 5
    Dernier message: 05/03/2009, 23h52
  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, 11h30
  5. Réponses: 4
    Dernier message: 25/04/2006, 12h47

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