Salut tout le monde,

je recherche des avis sur les méthodes à employer sur la création d'un fichier XML, au niveau de l'organisation des choses.
Je vous demande pour ce cas précis, mais si vous pouvez (si vous avez le temps ou l'envie) développer un peu le pourquoi du comment pour généraliser à un autre exemple plus général, ça serait top Smiley cligne

Donc, dans mon cas, j'ai une série de groupe texte/lien relatif au sujet traité.

Donc, je vois 3 méthodes :

<items>

<item id="blala">
  <description>tagada tsoin tsoin</description>
  <related>http// blalbal</related>
</item>

<item id="blala2">
  <description>tagada tsoin tsoin</description>
  <related>http// blalbal2</related>
</item>
</items>



<items>

<item id="blala">
  <description>tagada tsoin tsoin</description>
  <related url="http// blalbal" />
</item>

<item id="blala2">
  <description>tagada tsoin tsoin</description>
  <related url="http// blalbal2" />
</item>
</items>



<items>

<item id="blala" url="http //bmala">
tagada tsoin tsoin
</item>

<item id="blala2" url="http //bmala2">
tagada tsoin tsoin
</item>
</items>


Qu'est ce qui vous semble le plus approprié ?

Question subsidiaire, définir une DTD (même très simple), est-ce utile, avantageux, quelles utilisations possibe etc ...

Merci si vous avez des infos sur tout ça !
@+
Modifié par Olivier (24 Apr 2005 - 13:24)
Olivier a écrit :
Qu'est ce qui vous semble le plus approprié ?

Je ne suis pas sure que cette question est un sens. A priori, toutes les approche que tu donne sont valable (c'est ça l'interret de XLM !)... en fait, ça va surtout dépendre du volume de donnée (s'il y en a beaucoup, il vaux mieux essayer de reduire le code), du nombre d'imbriquation de balise (s'il y en a beaucoup, ça peut être interressante d'utiliser des attribut pour réduire le nombre), si le document XML doit etre compréhensible par un être humain (dans ce cas, un peut de verbosité ne fait pas de mal), etc...

Olivier a écrit :
Question subsidiaire, définir une DTD (même très simple), est-ce utile, avantageux, quelles utilisations possibe etc ...

Là encore, ça va beaucoup dépendre de l'utilisation de ton document, est surtout du parseur qui va l'utiliser. S'il s'agit d'un document privée dont tu va métriser l'usage, tu n'est pas forcemenbt obligé de rédiger une DTD (a moins que le parseur que tu veux utiliser l'exsige). Par contre, si le document à une vocation publique, dans ce cas, une DTD est indispensable afin de s'assurer que le document sera correctement parser/valider par des parseur extremement variés.


Smiley smile
Jep a écrit :

Je ne suis pas sure que cette question est un sens.

C'est ce que je me disais au départ Smiley langue et je voulais tout de même savoir s'il y avait un usage particulier etc, des habitudes...

En fait, mon truc, c'est du contenu de bulle d'aide.
Je fais un item par petite notion à introduire en bulle d'aide, et je met un lien pour en savoir plus en détail etc qui renvoi à une page complète.

Donc, mon fichier XML contient juste l'aide et le lien relatif au sujet.
Donc, c'est moi qui controle tout, eventuellement je ferais un interface web pour gérer le contenu du dit fichier, j'espere que PHP4 sera suffisant pour ce petit truc, parcequ'a priori ça sera pas avec PHP5.

Ensuite, pour utiliser le fichier XML, je souhaite utiliser JavaScript qui récuperera les infos de telle ou telle notion dans le fichier XML et me créera ma bulle d'aide.

Donc, en conclusion de ce que tu disais, vu le faible volume de données et que les modifications pourront intervenir à la main, mieux vaut user d'une peu plus de balisage. Pour la DTD, je n'en ai pas besoin à priori donc.
J'en ferais peut être une pour m'amuser (pour voir comment ça se fait disons Smiley langue ), mais si ça n'a aucun interet aucun, peut être pas !

Merci Smiley cligne
Olivier a écrit :
j'espere que PHP4 sera suffisant pour ce petit truc

Oui, sans problème Smiley cligne

Olivier a écrit :
la DTD, je n'en ai pas besoin à priori donc.
J'en ferais peut être une pour m'amuser (pour voir comment ça se fait disons Smiley langue )

Exelente méthode d'apprentissage Smiley smile
Le sujet porte la mention [résolu], mais je pense pouvoir apporter quelques informations qui n'ont pas encore été précisées.

Posée sous une forme plus générale, la question me semble être : Vaut-il mieux utiliser un attribut ou un élément dans un fragment XML, ou encore dans quel cas utiliser un attribut plutôt qu'un élément ?

Les syntaxes XML d'Olivier étant toutes bonnes on ne peut que constater la relative équivalence entre élément et attribut. Pour avancer il faut donc s'interroger sur ce qui les différencie, et je vois 2 points essentiels :
- l'élément est un noeud admettant des fils (éléments, attributs) et porte donc un arbre alors que l'attribut n'est qu'un atome
- l'attribut peut bénéficier de caractéristiques fortes (contraintes) définies dans la DTD

Pour illustrer le premier point, reprenons l'exemple de <related/>. Pour trancher entre élément ou attribut il faut se poser la question : <related/> porte-il au fond une notion riche susceptible d'être décrit comme un arbre ou au contraire est-il un véritable atome du type url unique ?

Pour illustrer le second point voilà ce qu'une DTD a le droit de dire :
ELEMENT elt1 ANY
ATTLIST elt1 attrib1 (yes | no | any) "yes" 
Ce code signifie que attrib1, attribut de l'élément elt1 ne peut prendre que 3 valeurs, et que sa valeur par défaut est yes.
L'intérêt peut être considérable dans le sens de limiter les erreurs et d'automatiser l'écriture des attributs.

C'est pourquoi au delà de cet exemple l'utilisation systématique d'une DTD me semble du plus grand intérêt pour la régularité du XML produit.
Modifié par Xavier (26 Apr 2005 - 11:23)
Pour choisir entre attribut et élément il y a souvent la question "est-ce une caractéristique de mon objet ou un contenu ?"

Si j'ai une voiture blanche et que je la décris textuellement, "couleur" sera logiquement un attribut. Si par contre c'est mon garagiste qui réceptionne la voiture, lui fera une liste des caractéristiques, "couleur" sera un contenu de la liste, donc sera un élément.

Il n'y a pas de règle absolue mais ce genre de question peut déjà souvent trancher les cas simples. En général les url et identifiants divers sont des attributs, car rarement le contenu réel ou sa description, juste une caractéristique du contenu qui est décrit.

La seconde forme personnellement j'ai toujours trouvé ça très batard, mettre un élément vide uniquement pour poser une fonctionnalité ou un attribut. Je préfère souvent soit un réel attribut dans le tag père, soit un élément fils à part entière.

D'un point de vue syntaxe, tout est "correct". Tant que tu définis ta DTD une fois pour toute, n'importe laquelle de tes solutions est valable
Okay, merci pour les précisions, c'est assez instructif !

Finalement, j'avais choisi <related>http//...</related> parceque j'avais du mal à manipuler <related url="..." /> avec JavaScript (j'ai pas cherché longtemps)

Le discours de Xavier m'a convaincu, et en fait je pensais ça de prime abord, il me semble à moi aussi que ce type d'url a plus sa place dans un attribut que dans un noeud.

En fait, la même discussion peut se poser au niveau du HTML, avec les <cite> et cite="" par exemple, les 2 sont utilisés, les 2 sont correct, c'est souvent une question de contexte.

Je pense que je vais définir une DTD, ça me parait un très bon exercice pour rendre le XML moins obscur et vu que je compte utiliser ce système assez régulierement, ça sera pas perdu Smiley smile

(ps c'est marqué Smiley resolu , mais rien n'empeche de compléter, c'est d'ailleurs très chouette de le faire ! merci !)