Etiquetas, casillas de verificación y botones de radio.

Mi aplicación web utiliza formularios dispuestos como se muestra en el siguiente ejemplo ...

First Name      [____________]
Last Name       [____________]
Gender          () Male  () Female

El marcado que uso es algo como ...

<label for="firstName">First Name</label><input type="text" id="firstName" />
<label for="lastName">Last Name</label><input type="text" id="lastName" />
<label>Gender</label>
<fieldset>
  <legend>Gender</legend>
  <input type="radio" name="sex" id="sex-m" value="m">
  <label for="sex-m">Male</label>
  <input type="radio" name="sex" id="sex-f" value="f">
  <label for="sex-f">Female</label>
</fieldset>

Tengo los siguientes problemas que no sé cómo resolver ...

Quiero tener el grupo completo de botones de radio etiquetados como cualquier otro campo (como en el diagrama anterior), pero no hay nada con qué vincular la etiqueta (es decir, nada para su atributo "para", ya que cada radio en el grupo tiene su etiqueta propia solo por el valor del botón de opción individual) Una etiqueta sin un atributo "para" no pasará el cumplimiento de accesibilidad.

El elemento <legend> del fieldset parece duplicar la función de la etiqueta. ¿Es esto realmente necesario?

Había pensado en diseñar la etiqueta <legend> para que pareciera una etiqueta, y prescindir de la etiqueta para el grupo de botones de radio, pero eso me parece un poco extraño, y también presentará complejidades en otras partes de mi código (que se basa en los elementos <label> para hacer un marcado de mensajes de validación ingenioso y varias otras cosas)

Gracias por adelantado.

Respuestas a la pregunta(2)

Su respuesta a la pregunta