Attributi XML

Gli elementi XML possono contenere attributi all'interno del tag di inizio, come nell'HTML.

L'attributo (Attribute) fornisce informazioni aggiuntive (accessorie) sull'elemento.

Gli attributi XML devono essere racchiusi tra virgolette

Il valore dell'attributo deve essere racchiuso tra virgolette, ma possono essere usate sia virgolette singole che doppie.

Ad esempio, per indicare il genere di una persona, il tag <person> può essere scritto così:

<person gender="female">

O anche così:

<person gender='female'>

Se il valore dell'attributo contiene virgolette doppi, puoi usare virgolette singole, come nell'esempio seguente:

<gangster name='George "Shotgun" Ziegler'>

O puoi usare i caratteri entità:

<gangster name="George "Shotgun" Ziegler">

Elementi XML e attributi

Ecco due esempi:

<person gender="female">
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>
<person>
  <gender>female</gender>
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

Nel primo esempio, sex è un attributo. Nel secondo esempio, sex è un sottoelemento. Entrambi gli esempi possono fornire la stessa informazione.

Non ci sono regole in XML che ci dicano quando utilizzare gli attributi e quando utilizzare i sottoelementi. La mia esperienza è che in HTML gli attributi sono molto comodi, ma in XML dovresti evitare di utilizzarli. Se l'informazione sembra essere dati, usa i sottoelementi.

Il mio modo preferito

I tre documenti XML seguenti contengono informazioni completamente identiche:

Nel primo esempio è stato utilizzato l'attributo date:

<note date="2008-01-10">
  <to>George</to>
  <from>John</from>
</note>

Nel secondo esempio è stato utilizzato l'elemento <date>:

<note>
  <date>2008-01-10</date>
  <to>George</to>
  <from>John</from>
</note>

Nel terzo esempio è stato utilizzato l'elemento date esteso (è la mia preferita):

<note>
  <date>
    <year>2008</year>
    <month>01</month>
    <day>10</day>
  </date>
  <to>George</to>
  <from>John</from>
</note>

Evitare l'uso degli attributi XML?

Alcuni dei punti da considerare nell'uso degli attributi sono:

  • Gli attributi non possono contenere più valori (gli elementi possono)
  • Gli attributi non possono descrivere la struttura ad albero (gli elementi possono)
  • Gli attributi non sono facili da estendere (per cambiamenti futuri)

Prova a utilizzare gli elementi per descrivere i dati. E usa semplicemente gli attributi per fornire informazioni non correlate ai dati.

Non fare questa sciocchezza (non è il modo in cui dovrebbe essere utilizzato l'XML):

<note day="10" month="01" year="2008"
to="George" from="John" heading="Promemoria"
body="Non dimenticare l'incontro!"
</note>

Attributi XML per i metadati

A volte viene assegnato un ID agli elementi per riferimento. Questi ID possono essere utilizzati per identificare gli elementi XML, funzionando allo stesso modo dell'attributo ID in HTML. Questo esempio ci dimostra questo caso:

<messages>
  <note id="501">
    <to>George</to>
    <from>John</from>
    <heading>Promemoria</heading>
    <body>Non dimenticare l'incontro!</body>
  </note>
  <note id="502">
    <to>John</to>
    <from>George</from>
    <heading>Re: Reminder</heading>
    <body>I will not</body>
  </note> 
</messages>

上面的 ID 仅仅是一个标识符,用于标识不同的便签。它并不是便签数据的组成部分。

在此我们极力向您传递的理念是:元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素。