Atributos XML

Los elementos XML pueden contener atributos en la etiqueta de inicio, al igual que HTML.

Los atributos (Attribute) proporcionan información adicional (adicionales) sobre los elementos.

Los atributos XML deben llevar comillas

Los valores de atributo deben estar entre comillas, aunque se pueden usar comillas simples o dobles.

Por ejemplo, para la información de género de una persona, la etiqueta <person> se puede escribir así:

<person gender="female">

O también así:

<person gender='female'>

Si el valor del atributo contiene comillas dobles, se pueden usar comillas simples, como en el siguiente ejemplo:

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

O puede usar entidades de caracteres:

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

Elementos XML y atributos

Vea estos dos ejemplos:

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

En el primer ejemplo, sex es una propiedad. En el segundo ejemplo, sex es un subelemento. Ambos ejemplos pueden proporcionar la misma información.

No hay reglas en XML que nos digan cuándo usar propiedades y cuándo usar subelementos. Mi experiencia es que en HTML, las propiedades son muy convenientes, pero en XML, es mejor evitarlas. Si la información se parece a datos, usa subelementos.

Mi manera favorita

Los siguientes tres documentos XML contienen información completamente idéntica:

En el primer ejemplo se utiliza la propiedad date:

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

En el segundo ejemplo se utiliza el elemento <date>:

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

El tercer ejemplo utiliza el elemento date extendido (es mi favorito):

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

¿Evitar el uso de propiedades XML?

Algunas cosas a considerar al usar propiedades son:

  • Las propiedades no pueden contener múltiples valores (los elementos pueden)
  • Las propiedades no pueden describir estructuras de árboles (los elementos pueden)
  • Las propiedades no son fáciles de expandir (para cambios futuros)

Intenten usar elementos para describir los datos. Y únicamente use propiedades para proporcionar información irrelevante para los datos.

No hagan semejante tontería (no es la manera en que XML debería ser utilizado):

<note day="10" month="01" year="2008"
to="George" from="John" heading="Recordatorio"
body="¡No olvide la reunión!"
</note>

Atributos XML para metadatos

A veces se asignan ID a los elementos para referencias. Estos ID índices se pueden usar para identificar elementos XML, funcionando de la misma manera que la propiedad ID en HTML. Este ejemplo nos muestra este caso:

<messages>
  <note id="501">
    <to>George</to>
    <from>John</from>
    <heading>Recordatorio</heading>
    <body>¡No olvide la reunión!</body>
  </note>
  <note id="502">
    <to>John</to>
    <from>George</from>
    <encabezado>Re: Recordatorio</encabezado>
    <body>No lo haré</body>
  </note> 
</messages>

El ID superior es solo un identificador, utilizado para identificar diferentes etiquetas. No es parte de los datos de la etiqueta.

La idea que nos esforzamos por transmitir aquí es que los metadatos (datos sobre datos) deben almacenarse como atributos, mientras que los datos en sí deben almacenarse como elementos.