XML : question sur la structure d'un fichier - XML/XSL - Programmation
Marsh Posté le 26-12-2003 à 00:19:35
Ca depend de ce que tu veux faire de tes données, mais c'est pas toujours completement identique.
Exemple:
<?xml version="1.0" ?>
<book>
<auteur nom="gerard" metier="routier"/>
</book>
et
<?xml version="1.0" ?>
<book>
<auteur metier="routier" nom="gerard"/>
</book>
sont equivalents en XML
Par contre:
<?xml version="1.0" ?>
<book>
<auteur>
<name>gerard</name>
<metier>routier</metier>
</auteur>
</book>
et
<?xml version="1.0" ?>
<book>
<auteur>
<metier>routier</metier>
<name>gerard</name>
</auteur>
</book>
Ne sont pas equivalents en XML.
A+,
PS Tu as oublié le /> en fin d'un element vide dans ton premier exemple.
Marsh Posté le 26-12-2003 à 00:21:27
en effet
Mais au-delà de ceci, quelle est la différence entre mettre une donnée en balise ou en attribut ?
Marsh Posté le 26-12-2003 à 00:25:38
Perso, je me représente le XML comme une structure arborescente. Imagine ton explorateur de fichiers, par exemple ; tu verrais un explorateur où tous les attributs de tes fichiers seraient des fils de ces fichiers ? Un peu le bordel, non ?
Pour une définition plus abstraite, un attribut est ce qui sert à caractériser un noeud dans ton document XML.
Maintenant, si t'as envie de faire des noeuds-fils au lieu d'attributs, rien ne t'en empêche, mais ça n'est peut-être pas le plus approprié dans tous les cas
Marsh Posté le 26-12-2003 à 00:30:45
Donc c'est purement personnel, c'est une liberté que le XML permet alors.
Je commence à voir plus clair, mais c'est vrai que c'est subtil, comme le dit Gilou avec l'ordre des balises.
Marsh Posté le 26-12-2003 à 10:54:23
void_ppc a écrit : en effet |
Il y a plein de choses que tu ne peux pas faire avec un attribut: Pas de structure dans l'ordre d'apparition, pas de possibilite de repetition... Donc c'est moins puissant que un modele ou tout est en element fils(et donc pas equivalent). Neanmoins...
Il y a des choses qu'il aurait ete possible de faire avec des attributs, mais que malheureusement la spec XML n'a pas inclus:
Considerer que tout attribut declare sur un element E est automatiquement declare sur tout element du sous arbre de E (et donc que sa valeur peut etre redefinie localement). Definir des attributs globaux... [XML schemas est plus permissif a ce sujet]
Donc pourquois des attributs?
* ecriture plus compacte utilisant moins de place
* permet d'indiquer qu'un element vide est vide
* permet d'eviter d'ecrire des structures particulierement lourdes pour une DTD: pour un element E avec deux attributs a et b, le modele de contenu sera si c'etaient des elements fils [pour les attributs seuls] ((a?|b?)|(b|a?))] et ca augmente avec le nombre d'attributs [si le connecteur SGML & avait ete introduit en XML, c'aurait ete tres simplement (a? & b?) mais on n'a pas cette possibilite {sauf a passer par les XML Schemas]
* permet de typer la donnée (tres legerement) [On peut bien plus avec les XML Schemas]
etc. En fait, les raisons sont liees a des histoires d'utilisation de place, et aux problemes inherents a l'utilisation de DTDs [donc de compatibilite avec un modele un peu archaique maintenant qu'on a les XML Schemas, Relax NG...]. Avec des XML Schemas, on peut probablement se passer sans pb des attributs et avoir des schemas avec des contraintes identiques a celles de modeles avec des DTDs et des attributs.
A+,
Marsh Posté le 26-12-2003 à 12:46:55
ReplyMarsh Posté le 30-03-2004 à 14:03:36
Désolé de faire ressurgir ce sujet de la troisième page, mais j'aimerais tenter une petite réflexion.
un attribut à une importante contrainte, il est mono-valué et unique.
alors qu'un fils peut être multiple et même de type complex (avec petits-fils, arrières-petits-fils,...)
Ce que j'en pense, est que pour faire un format xml, tout neuf from scratch, il faut s'inspirer de formats utilisés massivement : RDF, RSS, XHTML, MATHML, ATOM, etc...
Mais je n'ai malgré tout rarement l'impression de faire "juste".
Marsh Posté le 30-03-2004 à 23:05:13
Non, un attribut n'est pas necessairement monovalué.
Vas lire la definition des attributs de type ENTITIES, IDREFS et NMTOKENS dans la spec XML.
A+,
Marsh Posté le 25-12-2003 à 23:21:41
Bonjour,
Je suis en train de me poser une question existentielle :
Prenons le même bout de données, mais stocké différement :
<?xml version="1.0" ?>
<book>
<auteur nom="gerard" metier="routier">
</book>
<?xml version="1.0" ?>
<book>
<auteur>
<name>gerard</name>
<metier>routier</metier>
</auteur>
</book>
Est-ce que l'une est meilleure que l'autre, ou alors cela dépends uniquement de la méthode avec laquelle on va lire les données ?
merci
Message édité par void_ppc le 25-12-2003 à 23:22:37