Ya que te pones, podías hacerlo bien, al menos :P

Algunas correcciones a tu formulario básico...

1. "Alta en el servicio" no es un buen identificador para el <legend>, 
teniendo en cuenta los datos que agrupa. Ese texto es más bien un título 
que identifica el formulario completo, y no a un grupo de controles. La 
diferencia es que el título se lee sólo una vez, mientras que el 
<legend> es leído por el lector de pantalla cada vez que se accede a uno 
de los controles del grupo. Es decir, para el camop "nombre", por 
ejemplo, el lector de pantalla leerá "alta en el servicio nombre cuadro 
de edición", y también para el resto: "alta en el servicio apellidos 
cuadro de edición", "alta en el servicio dni cuadro de edición", "alta 
en el servicio contraseña cuadro de contraseña". En resumen, NO se 
deberían agrupar todos los campos de un formulario en un <fieldset>, 
para eso ya está el formulario.

2. Doy por hecho que has suprimido a propósito los atributos "name" para 
simplificar, pero está claro que todos los campos que recogen variables 
deben tener este atributo, y el formulario debe tener como mínimo 
"action" y "method".

3. El atributo "size" es de presentación y por lo tanto deberían usarse 
hojas de estilo en su lugar.

4. Tal y como está el formulario, sin hojas de estilo se verán todos los 
campos apelotonados, unos detrás de otros, lo que puede llegar a 
confundir al usuario de cuál es la etiqueta que corresponde a cada 
cuadro. Por eso es conveniente incluir cada par label/input dentro de un 
div independiente.

5. En campos como el DNI, que probablemente requieren un formato 
concreto, es importante poner un ejemplo de cuál es ese formato. Dado 
que lo estás limitando a 9 caracteres supongo que no admites el punto 
separador ni el guión, y no sé si el cero a la izquierda, por lo que hay 
que concretárselo al usuario.

6. Es preferible incluir cada <input>/<select>/<textarea> dentro de su 
<label> correspondiente, además de realizar la asociación explícita 
mediante for e id.

7. Como recomendación adicional, creo que puede ser interesante que los 
id y name de cada campo sean distintos, para evitar confusiones entre el 
nombre de variable y el identificador del control.

Resumiendo, un formulario bien formado sería más bien así:

<form action="..." method="...">
<h1>Alta en el servicio</h1>
<div>
  <label for="tx-nombre">Nombre:
  <input id="tx-nombre" name="nombre" type="text" />
  </label>
</div>
<div>
  <label for="tx-apell">Apellidos:
  <input id="tx-apell" name="apellidos" type="text" />
  </label>
</div>
<div>
  <label for="tx-dni">DNI: 
  <input id="tx-apell" name="apellidos" type="text" />
  <span class="ej">Ejemplo: 09876543A</span>
  </label>
</div>
<div>
  <label for="pw-pass">Contraseña: 
  <input id="tx-pass" name="contrasena" type="password" />
  </label>
</div>
<div>
  <input type="submit" value="Dar de alta" />
</div>
</form>

Sí va a ser verdad que mareamos la perdiz...

Saludín,
Ramón.

Adolfo lo dice siempre:
> Buenas a todos, como digo siempre, mareais la perdiz como nadie este es un 
> ejemplo de un formulario basico:
_______________________________________________
Lista de distribución Ovillo
Para escribir a la lista, envia un correo a [email protected]
Puedes modificar tus datos o desuscribirte en la siguiente dirección: 
http://lists.ovillo.org/mailman/listinfo/ovillo

Responder a