Elementi XML e attributi
In XML non ci sono regole su quando usare gli attributi e quando usare gli elementi figlio.
Uso di elementi e attributi
I dati possono essere archiviati negli elementi figlio o negli attributi.
Dai 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 usare gli attributi e quando usare gli elementi figlio. La mia esperienza è che gli attributi sono utili in HTML, ma in XML dovresti cercare di evitarli. Usa gli elementi figlio se le informazioni sembrano dati.
Il mio modo preferito
Mi piace memorizzare i dati negli elementi figlio.
I seguenti tre documenti XML contengono esattamente le stesse informazioni:
Nel primo esempio viene utilizzato un attributo di data:
<note date="12/11/2002">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Nel secondo esempio viene utilizzato un elemento data:
<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 di data espanso viene utilizzato nel terzo: (QUESTO È IL MIO PREFERITO):
<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 di utilizzare gli attributi?
Dovresti evitare di usare gli attributi?
Alcuni dei problemi con gli attributi sono:
- gli attributi non possono contenere più valori (gli elementi figlio possono)
- gli attributi non sono facilmente espandibili (per modifiche future)
- gli attributi non possono descrivere le strutture (gli elementi figlio possono)
- gli attributi sono più difficili da manipolare dal codice del programma
- i valori degli attributi non sono facili da testare rispetto a un DTD
Se utilizzi gli attributi come contenitori per i dati, ti ritroverai con documenti difficili da leggere e gestire. Prova a usare gli elementi per descrivere i dati. Utilizzare gli attributi solo per fornire informazioni non rilevanti per i dati.
Non finire così (non è così che dovrebbe essere usato XML):
<note day="12" month="11" year="2002"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
Un'eccezione alla mia regola degli attributi
Le regole hanno sempre delle eccezioni.
La mia regola sugli attributi ha un'eccezione:
A volte assegno riferimenti ID agli elementi. Questi riferimenti ID possono essere utilizzati per accedere agli elementi XML più o meno allo stesso modo degli attributi NAME o ID in HTML. Questo esempio lo dimostra:
<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 della nota.
Quello che sto cercando di dire qui è che i metadati (dati sui dati) dovrebbero essere archiviati come attributi e che i dati stessi dovrebbero essere archiviati come elementi.