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.
<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>
.<titulo>
y <autor>
) sigue siendo representado por elementos hijos.<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:
<persona nombre="Juan"/> <!-- válido -->
<persona Nombre="Juan"/> <!-- es un atributo distinto -->
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:
Regla práctica:
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.
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.id
, codigo
).activo="true"
, disponible="no"
).idioma
, versión
, formato
).Ejemplo:
<imagen id="img001" formato="jpg" ancho="800" alto="600"/>
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"/>
< "/>
<?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:
id
, idioma
, disponible
) describen a cada libro.titulo
, autor
, genero
) contienen la información principal.<persona nombre=Juan/> <!-- Incorrecto -->
<persona nombre="Juan"/> <!-- Correcto -->
<persona nombre="Juan" nombre="Pedro"/> <!-- Inválido -->
<pedido productos="Leche,Pan,Huevos"/> <!-- Difícil de procesar -->
Mejor con elementos:
<pedido>
<producto>Leche</producto>
<producto>Pan</producto>
<producto>Huevos</producto>
</pedido>
Dominar este equilibrio es fundamental para diseñar documentos XML claros, fáciles de leer y procesar.