HellooOOoo

j'ai un problème avec mon fichier xml et sa dtd : je voudrais faire une énumération pour que le genre d'un livre puisse être Policier, Fantastique ou Autres (et uniquement un de ces 3 là)

voici mon fichier xml
<catalogue>
   <livre>
      <auteur>Agatha Christie</auteur>
      <titre> L'affaire Prothero </titre>
      <editeur>Le Masque</editeur>
      <genre>Policier</genre>
      <resume>...</resume>
   </livre>
   <livre>
      <auteur>Agatha Christie</auteur>
      <titre>Tmoin  charge</titre>
      <editeur>Le Masque</editeur>
      <genre>Policier</genre>
      <resume>...</resume>
   </livre>
   <livre>
      <auteur>Exbrayat</auteur>
      <titre> Avanti la musica </titre>
      <editeur>Le Masque</editeur>
      <genre>Policier</genre>
        <resume>...</resume>
      </livre>
</catalogue>



voici sa dtd :
<!ELEMENT catalogue (livre+)>
<!ELEMENT livre ((auteur)+,titre,editeur,genre,resume)>
<!ELEMENT auteur (#PCDATA)>
<!ELEMENT titre (#PCDATA)>
<!ELEMENT editeur (#PCDATA)>
<!ELEMENT genre (Policier | Fantastique | Autre)>
<!ELEMENT resume (#PCDATA)>


seulement j'ai une erreur quand il rencontre "<genre>Policier</genre>"
a écrit :
character data is not allowed here



Pouvez vous me dire mon erreur please ?


merkiiiiiii
euh .. non !

je ne pensais pas qu'il fallait le faire ! Smiley rolleyes

mais je l'ai rajouté et ça n'a rien changé Smiley fache

Smiley decu Smiley decu
Te donne t'on le numéro de la ligne ou il y a l'erreur ?
Modifié le 05 Jan 2005 - 17:34
@fastclemmy> visiblement Poich ne souhaite pas que Policier, Fantastique, Autre soit des éléments, mais plutôt la valeur que prend l'élément genre. Donc déclarer Policier, Fantastique, Autre en tant qu'éléments n'est pas une bonne piste.

@Poich> Ce que tu souhaite faire n'est pas possible avec une DTD. Pour un élément, il y a 3 possibilités :
- parler des ses fils (quel, combien...). Et c'est la syntaxe que tu as utilisée, mais elle ne correspond pas à ce que tu souhaites faire.
- parler du type de donnée qu'il contient (#CDATA, #PCDATA, ANY) quand il contient des données. Malheureusement il n'est pas possible de définir la valeur prise par ces données.
- dire qu'il est vide

Bon mais il y a un contournement simple et parfaitement adapté : définir genre comme attribut de livre, et là tout devient possible. Voici ce qu'il te faut :
ATTLIST livre genre (Policier | Fantastique | Autre)

Pour un fichier XML source de la sorte :
<catalogue>
   <livre genre="Policier">
      <auteur>Agatha Christie</auteur>
      <titre> L'affaire Prothero </titre>
      <editeur>Le Masque</editeur>
      <resume>...</resume>
   </livre>
    ....
</catalogue>
2bass -> l'erreur est quand il rencontre "<genre>Policier</genre>" soit à la ligne 6 si tu te fie à l'extrait du fichier xml
a écrit :
character data is not allowed here


Xavier -> merci de l'astuce je vais tester ça !