Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1395 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  [RESOLU] Question simple sur la DTD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] Question simple sur la DTD

n°1959978
ZePRiNCE
Coucou, tu veux voir ma RTX ?
Posté le 24-01-2010 à 05:09:51  profilanswer
 

Bonjour !
 
Pour un projet, je parse un fichier XML et un fichier TXT et generer un .XML en sortie.
Ca, c'est okay [:amel_the_white]  
 
Mais comme j'aime bien faire les choses, je voudrais génerer un .DTD également.
 
 
Voici à quoi ressemble mon .XML de sortie :

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <text>
  3. La grippe A a des symptomes similaires à ceux de la grippe saisonnière et peuvent inclure fièvre, éternuements, <symptomes>mal de gorge</symptomes>, <symptomes>toux</symptomes>, maux de tête et <symptomes>douleur</symptomes>s <symptomes>musculaire</symptomes>s et <symptomes>articulaire</symptomes>s.
  4. </text>

(C'est ce que la prof veut)
 
 
 
J'ai un doute sur le .DTD qui doit etre associé :
J'ai fait ça pour l'instant :

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <!ELEMENT text (symptomes|remedes|causes)*>
  3. <!ELEMENT symptomes (#PCDATA)>
  4. <!ELEMENT remedes (#PCDATA)>
  5. <!ELEMENT causes (#PCDATA)>

Mais je pense que c'est incorrecte. Puisque je n'ai pas dit qu'il pouvait y avoir du PCDATA dans text directement. Mais je vois pas trop comment faire.
 
 
 
Un tout petit coup de main serait tres apprecié, merci d'avance !  :hello:


Message édité par ZePRiNCE le 24-01-2010 à 17:03:48

---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3
mood
Publicité
Posté le 24-01-2010 à 05:09:51  profilanswer
 

n°1960017
gilou
Modérateur
Modzilla
Posté le 24-01-2010 à 14:11:39  profilanswer
 

Pour avoir une DTD il te manque la déclaration du DOCTYPE.
Pour ton element text, il contient tout simplement du PCDATA ou autre chose. C'est ce qu'on appelle du mixed-content.

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
  2. <!DOCTYPE text [
  3. <!ELEMENT text (#PCDATA|symptomes|remedes|causes)* >
  4. <!ELEMENT symptomes (#PCDATA) >
  5. <!ELEMENT remedes (#PCDATA) >
  6. <!ELEMENT causes (#PCDATA) >
  7. ]>


A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1960026
ZePRiNCE
Coucou, tu veux voir ma RTX ?
Posté le 24-01-2010 à 14:54:27  profilanswer
 

Ok, merci beaucoup !!
 
Je connaissais pas le "mixed-content" (et pluttot la syntaxe de comment la delcarer :) )
 
Par contre "text" c'est mon élément racine, nous la prof nous a dit de ne pas mettre l'élément racine dans la DTD
 
Et que c'est dans le XML qu'il faut le faire
<!DOCTYPE ...NomDeLaRacineIci.. SYSTEM "fichier.dtd">
 
Alors qui a raison ? [:amel_the_white]  
 
 :jap:


---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3
n°1960028
ZePRiNCE
Coucou, tu veux voir ma RTX ?
Posté le 24-01-2010 à 15:02:06  profilanswer
 

Donc :
 
 
XML

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
  2. <!DOCTYPE text SYSTEM "fichier.dtd">
  3. <text>
  4. La grippe A a des symptomes similaires à ceux de la grippe saisonnière et peuvent inclure fièvre, éternuements, <symptomes>mal de gorge</symptomes>, <symptomes>toux</symptomes>, maux de tête et <symptomes>douleur</symptomes>s <symptomes>musculaire</symptomes>s et <symptomes>articulaire</symptomes>s.
  5. </text>


 
DTD

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
  2. <!ELEMENT text (#PCDATA|symptomes|remedes|causes)* >
  3.     <!ELEMENT symptomes (#PCDATA) >
  4.     <!ELEMENT remedes (#PCDATA) >
  5.     <!ELEMENT causes (#PCDATA) >


 
 
 
Est-ce que c'est bon là? [:petrus75]  
 
merci :)


---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3
n°1960038
gilou
Modérateur
Modzilla
Posté le 24-01-2010 à 15:56:37  profilanswer
 

Ah, parce que tu définis ta DTD en externe, ce qui n'était pas précisé. J'avais mis ce qu'il faut pour une déclaration interne.
Dans ce cas la ce que tu as mis devrait coller.

 

Notes que la DTD, de nos jours, c'est plus qu'obsolète. Ca a été remplacé dans un premier temps par XML Schema, puis dans la pratique, comme c'était assez verbeux, par un format nettement plus compact, relax-ng.

 

Notes que tu as aussi la possibilité de faire:

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
  2. <!DOCTYPE text [
  3. <!ENTITY % dtd SYSTEM "fichier.dtd">
  4. %dtd;
  5. ]
  6. <text>
  7. La grippe A a des symptomes similaires à ceux de la grippe saisonnière et peuvent inclure fièvre, éternuements, <symptomes>mal de gorge</symptomes>, <symptomes>toux</symptomes>, maux de tête et <symptomes>douleur</symptomes>s <symptomes>musculaire</symptomes>s et <symptomes>articulaire</symptomes>s.
  8. </text>

(et fichier identique a ton post pour la dtd)
qui force explicitement (par l'appel a la parameter entity) la lecture du contenu de la dtd.
C'est moins courant, et pour plaire a ton prof, vaut probablement mieux rester sur ce que tu as mis ;)
A+,


Message édité par gilou le 24-01-2010 à 16:09:40

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1960039
ZePRiNCE
Coucou, tu veux voir ma RTX ?
Posté le 24-01-2010 à 16:01:37  profilanswer
 

Merci beaucoup gilou pour la confirmation et les détails ! :jap:
 
On a parlé du Schema en cours mais pour le projet vu que c'est un truc basique je pense qu'une DTD suffira
 
(en fait jpense meme que beaucoup auront oublié d'en faire une :whistle: )
 
A+ !


---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3
n°1960041
gilou
Modérateur
Modzilla
Posté le 24-01-2010 à 16:10:08  profilanswer
 

Je t'ai ajouté un petit complément.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1960051
ZePRiNCE
Coucou, tu veux voir ma RTX ?
Posté le 24-01-2010 à 17:03:20  profilanswer
 

Ouais on a pas vu les ENTITY, donc je vais laisser.
Mais au moins jme coucherai moins bete :D


---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  [RESOLU] Question simple sur la DTD

 

Sujets relatifs
[Resolu] Problème de récupération d'un fichier résultat de POST (API)une question sur une boucle dans se prog
[résolu] Décalage de qq pixels en haut sous Firefox ?[resolu] top 5 sur inner join
[PHP/HTML/MySql] Outils de dev freeware [Résolu][Résolu] Faire apparaitre une page en surimpression
[Resolu] namespace std n'existe pas[Résolu] boucle for ne retient que la dernière ligne du fichier
[Résolu] [VBA] Multiplication fausse 
Plus de sujets relatifs à : [RESOLU] Question simple sur la DTD


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR