In XML, non ci sono regole su quando utilizzare gli attributi, e quando utilizzare elementi figlio.
Uso di elementi contro attributi
I dati possono essere memorizzati in elementi figli o negli attributi.
Date un'occhiata a questi esempi:
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
Nel primo esempio il sesso è un attributo. Nell'ultimo, il sesso è un elemento figlio. Entrambi gli esempi forniscono le stesse informazioni.
Non ci sono regole su quando utilizzare gli attributi, e quando utilizzare elementi figlio. La mia esperienza è che gli attributi sono a portata di mano in HTML, ma in XML si dovrebbe cercare di evitarli. Utilizzare elementi figlio se le informazioni si sente come i dati.
Il mio modo preferito
I like to store data in child elements.
I seguenti tre documenti XML contengono esattamente le stesse informazioni:
Un attributo data viene usato nel primo esempio:
<note date="12/11/2002">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Un elemento data viene utilizzato nel secondo esempio:
<note>
<date>12/11/2002</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Un elemento Data espansa è utilizzata nel terzo: (THIS IS MY FAVORITE) :
<note>
<date>
<day>12</day>
<month>11</month>
<year>2002</year>
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Evitare l'uso di attributi?
In caso di evitare l'uso di attributi?
Alcuni dei problemi con attributi sono:
- attributi non possono contenere valori multipli (child elements can)
- attributi non sono facilmente espandibili (for future changes)
- attributi non possono descrivere le strutture (child elements can)
- attributi sono più difficili da manipolare da codice di programma
- valori degli attributi non sono facili da testare contro un DTD
Se si utilizzano gli attributi come contenitori per i dati, si finisce con documenti che sono difficili da leggere e mantenere. Prova ad utilizzare elements per descrivere i dati. Utilizzare gli attributi solo per fornire informazioni che non è rilevante per i dati.
Non finire come questo (this is not how XML should be used) :
<note day="12" month="11" year="2002"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
Una eccezione alla mia regola di attributo
Regole sono sempre delle eccezioni.
La mia regola sugli attributi ha una sola eccezione:
A volte assegno riferimenti ID a elementi. Questi riferimenti ID può essere utilizzato per accedere agli elementi XML più o meno allo stesso modo in cui il nome o l'ID attributi in HTML. Questo esempio dimostra in questo modo:
<messages>
<note id="p501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="p502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not!</body>
</note>
</messages>
L'ID in questi esempi è solo un contatore o un identificatore univoco, per identificare le diverse note nel file XML, e non una parte dei dati di nota.
Quello che sto cercando di dire è che i metadati (data about data) devono essere conservati come attributi, e che dati stessi devono essere conservati come elementi.