¿Son correctas las etiquetas span anidadas en XHTML?

150

¿Validará esto en XHTML?

<span>hello<span>world</span></span>
almiar
fuente
Me pregunto cómo esta pregunta logró reunir cientos de votos a lo largo de los años.
Sr. Lister el
1
@MrLister, supongo porque acabo de buscar en Google la pregunta y apareció este artículo ... :)
Andrew Truckle

Respuestas:

142

Sí lo hará Puede ayudarse a sí mismo utilizando la opción de entrada directa del validador de w3 :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
        <head>
          <title>Title</title>
        </head>

        <body>
           <p>
               <span>Test<span>Nest span</span></span>
           </p>
        </body>
      </html>
RichardOD
fuente
2
Eso responderá la parte "validar" de la pregunta, pero no la parte "OK". El DTD solo puede describir un subconjunto de la especificación.
Quentin
87

Absolutamente.

Aquí está la definición de un DOCTYPE estricto XHTML para un elemento span.

<!ELEMENT span %Inline;> <!-- generic language/style container -->
<!ATTLIST span
  %attrs;
  >

La parte "% en línea" me dice que puede tener nodos secundarios de "% en línea"; lista de elementos de entidades.

El elemento span se incluye en la lista de elementos clasificados como "% en línea", que combinado con span que permite elementos secundarios "% en línea" me dice que span es un hijo válido de span.

joebert
fuente
29

SPAN solo puede contener elementos en línea, como SPAN, etc.

dusoft
fuente
66
¡Span hará lo que yo le diga! span { display:block }: D
GreaterKing
Bueno, todavía no puede contener elementos de nivel de bloque, incluso si lo configura como un bloque. Por cierto, compruebe también que mi respuesta fue publicada hace 8 años.
dusoft
Sé que solo estaba tratando de crear jajaja ... y sí, "puedes" poner elementos de bloque dentro de tramos, no es como si el navegador explotara ni nada ... pero es algo que no debes hacer como regla general para seguir correctamente estándares web eso es todo.
GreaterKing
Ese es el punto. Gracias a los estándares web ya no tienes que hackear tu camino a través de la web. Bromas aparte, estoy agradecido de que las tengamos.
dusoft
1
Sí, ponga a H fuera del espacio y dentro de H.
dusoft