¡buenas rafa!
el elemento LABEL tiene dos formas de uso. una es la forma que muestras y otra es ubicando dentro de LABEL el contenido y un control de formulario.
Código:
<label>Label: <input ... ></label>
al menos en la especificación html4.01 ambas formas son válidas. la especificación te permite introducir algunos contenidos inline (contenidos que
no generan salto de línea antes y después). sólo que en un LABEL no debe haber otro LABEL y debe tener hasta un sólo control de formulario. en el ejemplo, fíjate que LABEL no contiene el atributo
for ni el INPUT tiene
id.
en tu código de muestra no debe haber problema al enviar los datos al servidor porque el navegador solamente utiliza el atributo
name para componer los valores, mas no el id. en este modelo, cuando usas
for y
id, ambos valores se comparten sin generar ningún tipo de problema porque los atributos son de distintos tipos. la especificación, además de definir los posibles elementos, atributos, y otras cosas, también definen que tipo de dato son los atributos. en el caso del atributo
id es de tipo
ID — valga la redundancia, pero el primero hace referencia al nombre del atributo (minúscula) y el segundo hace referencia al tipo (mayúscula), — el atributo
for es de tipo
IDREF (referencia de id). en fin, el atributo de tipo ID es el único que por norma no debe repetir el valor en otro atributo del mismo tipo. en español, quiere decir que puedes repetir tantas veces quiera el valor en el atributo
for para distintos elementos LABEL, pero el mismo valor debe existir una sola vez en un atributo
id.