Atributos en XML

Los atributos en XML son pares nombre-valor que se colocan dentro de la etiqueta de apertura de un elemento. Su función es agregar información adicional a ese elemento, sin formar parte del contenido principal.

Ejemplo básico

<libro id="1" idioma="es">
    <titulo>Don Quijote</titulo>
    <autor>Miguel de Cervantes</autor>
</libro>

Aquí:

  • id="1" e idioma="es" son atributos del elemento <libro>.
  • El contenido principal (<titulo> y <autor>) sigue siendo representado por elementos hijos.

1. Reglas para los atributos

  • Siempre se escriben en la etiqueta de apertura de un elemento.
  • Sus valores deben estar entre comillas dobles o simples:
<persona nombre="Ana"/>
<persona nombre='Ana'/>

Un elemento puede tener varios atributos:

<empleado id="1001" cargo="analista" area="TI"/>

Los nombres de atributos deben seguir las mismas reglas que los elementos:

  • No comenzar con números.
  • No usar espacios ni caracteres especiales.
  • Son case-sensitive (distinguen mayúsculas y minúsculas):
<persona nombre="Juan"/>   <!-- válido -->
<persona Nombre="Juan"/>   <!-- es un atributo distinto -->

2. Diferencia entre atributos y elementos

Una de las dudas más comunes es: ¿cuándo uso un atributo y cuándo un elemento?

Ejemplo con atributo:

<persona nombre="Laura" edad="30"/>

Ejemplo con elementos:

<persona>
    <nombre>Laura</nombre>
    <edad>30</edad>
</persona>

Ambos son válidos, pero la elección depende del contexto:

  • Atributos: usados para propiedades secundarias o metadatos.
  • Elementos: usados para datos principales o que puedan crecer en complejidad.

Regla práctica:

  • Si es parte esencial de la información, usá elementos.
  • Si es información extra que describe al elemento, usá atributos.

3. Ejemplos prácticos

a) Información de un libro

Con atributos:

<libro id="1" idioma="es" año="1605">
    <titulo>Don Quijote</titulo>
    <autor>Miguel de Cervantes</autor>
</libro>

Con elementos:

<libro>
    <id>1</id>
    <idioma>es</idioma>
    <año>1605</año>
    <titulo>Don Quijote</titulo>
    <autor>Miguel de Cervantes</autor>
</libro>

Ambos representan lo mismo, pero el primero es más ligero y fácil de procesar cuando los atributos son pocos.

b) Datos de un usuario

Uso mixto (recomendado):

<usuario id="501" activo="true">
    <nombre>Carla</nombre>
    <email>carla@example.com</email>
</usuario>
  • id y activo son atributos porque describen al usuario.
  • nombre y email son elementos, porque son datos principales.

4. Casos donde conviene usar atributos

  • Identificadores (id, codigo).
  • Estados o banderas (activo="true", disponible="no").
  • Propiedades simples (idioma, versión, formato).

Ejemplo:

<imagen id="img001" formato="jpg" ancho="800" alto="600"/>

5. Casos donde conviene usar elementos

  • Datos que pueden repetirse o ser complejos.
  • Contenido principal que no es accesorio.
  • Información jerárquica o estructurada.

Ejemplo (dirección de una persona):

<direccion>
    <calle>Av. Colón</calle>
    <numero>32</numero>
    <ciudad>Córdoba</ciudad>
</direccion>

No sería buena práctica meter todo en un atributo como:

<direccion datos="Av. Colón, 32, Córdoba"/>
< "/>

6. Ejemplo completo con atributos y elementos

<?xml version="1.0" encoding="UTF-8"?>

<biblioteca>
    <libro id="001" idioma="es" disponible="true">
        <titulo>Don Quijote</titulo>
        <autor>Miguel de Cervantes</autor>
        <genero>Novela</genero>
    </libro>
    <libro id="002" idioma="en" disponible="false">
        <titulo>Hamlet</titulo>
        <autor>William Shakespeare</autor>
        <genero>Teatro</genero>
    </libro>
</biblioteca>

Análisis:

  • Los atributos (id, idioma, disponible) describen a cada libro.
  • Los elementos (titulo, autor, genero) contienen la información principal.

7. Errores comunes con atributos

Olvidar las comillas

<persona nombre=Juan/>  <!-- Incorrecto -->
<persona nombre="Juan"/> <!-- Correcto -->

Usar el mismo atributo dos veces en un mismo elemento

<persona nombre="Juan" nombre="Pedro"/> <!-- Inválido -->

Guardar datos complejos en atributos (mala práctica)

<pedido productos="Leche,Pan,Huevos"/> <!-- Difícil de procesar -->

Mejor con elementos:

<pedido>
    <producto>Leche</producto>
    <producto>Pan</producto>
    <producto>Huevos</producto>
</pedido>

8. Resumen didáctico

  • Los atributos agregan información adicional dentro de una etiqueta.
  • Son útiles para identificadores, estados o propiedades simples.
  • Los elementos son mejores para datos principales y estructurados.
  • Una buena práctica es combinar ambos, usando atributos para describir y elementos para contener información.

Dominar este equilibrio es fundamental para diseñar documentos XML claros, fáciles de leer y procesar.