Principi del design XML: quando utilizzare gli elementi rispetto agli attributi di Uche Ogbuji di IBM è probabilmente una delle migliori risorse in materia.
Al centro della decisione è che gli attributi sono cose "fatte". Non è possibile cambiarli o modificarli o annidarli. Sono indipendenti dall'ordine e distinti all'interno dell'elemento (non puoi avere due della stessa cosa).
Se uno qualsiasi di questi vincoli è qualcosa che può cambiare, rendere i dati un nodo figlio dell'XML.
Nel tuo esempio, hai una persona che ha un nome e un'età. Ho un primo, secondo nome e cognome ... e un soprannome. E alcune persone hanno nomi da nubile, più nomi di mezzo o onorifici - come metteresti in John Ronald Reuel Tolkien in una tale struttura?
E così abbiamo qualcuno che ha due secondi nomi che hanno un ordine per loro. Questo dovrebbe mostrare chiaramente che no, un attributo non è la scelta migliore per questo.
Non riesco a trovarlo attualmente, ma nel documento sopra collegato c'è una dichiarazione secondo cui i nomi sono cose che richiedono un po 'di riflessione che portano a "Spero di espandere il trattamento dei nomi delle persone in markup in un articolo futuro. " Se qualcuno ha un ruolo guida su questo, si prega di lasciare un commento o modificarlo in questo punto.
D'altra parte, l'età è qualcosa che ha una struttura piuttosto fissa (suggerirei il compleanno piuttosto che un intero). In quanto tale, la rappresentazione di queste informazioni in un formato ben noto e compreso ha senso in un attributo. Una persona ha uno e solo un compleanno e non esiste un 'ordine' che desideri conservare.
Uche Ogbuji identifica tre principi fondamentali nella corretta progettazione di un formato xml. Le seguenti sono citazioni abbreviate dal documento collegato sopra.
- Principio delle informazioni strutturate
Se l'informazione è espressa in una forma strutturata, specialmente se la struttura può essere estensibile, utilizzare gli elementi. D'altra parte: se l'informazione è espressa come un token atomico, usa gli attributi
- Principio della leggibilità
Se l'informazione è intesa per essere letta e compresa da una persona, utilizzare gli elementi. Se le informazioni sono più facilmente comprensibili e digerite da una macchina, utilizzare gli attributi.
- Principio del collegamento elemento / attributo
Usa un elemento se hai bisogno che il suo valore sia modificato da un altro attributo
E così, i nomi dovrebbero essere elementi - sono dati strutturati che non sono un token atomico, hanno più probabilità di essere letti da un umano che da un computer e possono essere modificati da un altro attributo sul nome stesso.
Le date dovrebbero essere attributi - sono dati che sono un token atomico, sono più probabilmente letti da un computer che da un essere umano (e quindi trasformato nel formato preferito dall'essere umano se necessario ) e, infine, è improbabile che vengano modificati da altri attributi su di essi.