¿Son correctas las etiquetas span anidadas en XHTML?


150

¿Validará esto en XHTML?

<span>hello<span>world</span></span>

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>

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.


29

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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.