XML : question sur la structure d'un fichier

XML : question sur la structure d'un fichier - XML/XSL - Programmation

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
Reply

Marsh Posté le 25-12-2003 à 23:21:41   

Reply

Marsh Posté le 25-12-2003 à 23:52:00    

c'est une bonne question! et je plante un ptit drapeau :)

Reply

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.


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 26-12-2003 à 00:21:27    

:jap: en effet
 
Mais au-delà de ceci, quelle est la différence entre mettre une donnée en balise ou en attribut ?

Reply

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 ? :D
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 [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

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.

Reply

Marsh Posté le 26-12-2003 à 10:54:23    

void_ppc a écrit :

:jap: en effet
 
Mais au-delà de ceci, quelle est la différence entre mettre une donnée en balise ou en attribut ?

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+,


Message édité par gilou le 26-12-2003 à 10:59:09

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 26-12-2003 à 12:46:55    


 
Merci beaucoup, ca devient plus clair.
 

Reply

Marsh 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".

Reply

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+,


Message édité par gilou le 30-03-2004 à 23:06:02
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed