Les balises span imbriquées sont-elles correctes dans XHTML?

150

Cela validera-t-il en XHTML?

<span>hello<span>world</span></span>
meule
la source
Je me demande comment cette question a réussi à recueillir des centaines de votes positifs au fil des ans.
Mr Lister
1
@MrLister Je suppose parce que je viens de googler la question et que cet article est apparu ... :)
Andrew Truckle

Réponses:

142

Oui, il sera. Vous pouvez vous aider en utilisant l' option d'entrée directe du validateur du 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
la source
2
Cela répondra à la partie "valider" de la question, mais pas à la partie "OK". La DTD ne peut décrire qu'un sous-ensemble de la spécification.
Quentin
87

Absolument.

Voici la définition d'un DOCTYPE strict XHTML pour un élément span.

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

La partie "% Inline" me dit qu'elle peut avoir des nœuds enfants à partir de "% Inline;" liste d'éléments d'entités.

L'élément span est inclus dans la liste des éléments classés comme "% Inline", qui, combiné avec span autorisant les éléments enfants "% Inline", me dit que span est un enfant valide de span.

Joebert
la source
29

SPAN ne peut contenir que des éléments en ligne, tels que SPAN, etc.

dusoft
la source
6
Span fera ce que je lui dis! span { display:block }: D
GreaterKing
Eh bien, il ne peut toujours pas contenir d'éléments au niveau du bloc, même si vous le créez comme un bloc. BTW, vérifiez également que ma réponse a été publiée il y a 8 ans.
dusoft
Je sais que j'essayais juste de créer lol ... et oui, vous "pouvez" mettre des éléments de bloc à l'intérieur des travées, ce n'est pas comme si le navigateur exploserait ou quoi que ce soit ... mais c'est certains que vous ne devriez pas faire en règle générale pour suivre correctement normes Web c'est tout.
GreaterKing
C'est le point. Grâce aux standards du Web, vous n'avez plus à vous frayer un chemin sur le Web. Blagues à part, je suis reconnaissant que nous les ayons.
dusoft
1
Oui, mettez H hors de portée et span à l'intérieur de H.
dusoft