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


150

Cela validera-t-il en XHTML?

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

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>

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.


29

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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.