Principes de conception XML: quand utiliser les éléments par rapport aux attributs par Uche Ogbuji d'IBM est probablement l'une des meilleures ressources en la matière.
Au cœur de la décision est que les attributs sont des choses «faites». Vous ne pouvez pas les changer ou les modifier ou les imbriquer. Ils sont indépendants de l'ordre et distincts dans l'élément (vous ne pouvez pas en avoir deux de la même chose).
Si l'une de ces contraintes est susceptible de changer, faites des données un nœud enfant du XML.
Dans votre exemple, vous avez une personne qui a un nom et un âge. J'ai un prénom, un prénom et un nom ... et un surnom. Et certaines personnes ont des noms de jeune fille, plusieurs prénoms ou des titres honorifiques - comment mettriez-vous John Ronald Reuel Tolkien dans une telle structure?
Et donc nous avons quelqu'un qui a deux prénoms qui ont un ordre pour eux. Cela devrait clairement montrer que non, un attribut n'est pas le meilleur choix pour cela.
Je ne le trouve pas actuellement, mais dans le document lié ci-dessus, il y a une déclaration selon laquelle les noms sont des choses qui nécessitent un peu de réflexion menant à "J'espère développer le traitement des noms de personnes dans le balisage dans un futur article." Si quelqu'un a une piste à ce sujet, veuillez laisser un commentaire ou le modifier à cet endroit.
D'un autre côté, l'âge est quelque chose qui a une structure plutôt fixe (je suggère l'anniversaire plutôt qu'un entier). En tant que tel, la représentation de ces informations dans un format bien connu et compris a du sens dans un attribut. Une personne a un et un seul anniversaire et il n'y a pas de «commande» que vous souhaitez conserver.
Uche Ogbuji identifie trois principes de base pour concevoir correctement un format xml. Les citations suivantes sont abrégées du document lié ci-dessus.
- Principe de l'information structurée
Si l'information est exprimée sous une forme structurée, surtout si la structure peut être extensible, utilisez des éléments. D'un autre côté: si les informations sont exprimées sous forme de jeton atomique, utilisez des attributs
- Principe de lisibilité
Si les informations sont destinées à être lues et comprises par une personne, utilisez des éléments. Si les informations sont le plus facilement comprises et digérées par une machine, utilisez des attributs.
- Principe de la liaison élément / attribut
Utilisez un élément si vous avez besoin que sa valeur soit modifiée par un autre attribut
Et donc, les noms doivent être des éléments - ce sont des données structurées qui ne sont pas un jeton atomique, elles sont plus susceptibles d'être lues par un humain qu'un ordinateur et elles peuvent être modifiées par un autre attribut sur le nom lui-même.
Les dates doivent être des attributs - ce sont des données qui sont un jeton atomique, elles sont plus susceptibles d'être lues par un ordinateur qu'un humain (puis transformées au format préféré de l'homme si besoin est ), et enfin, il est peu probable qu'elles soient modifiées par d'autres attributs sur eux.