Y a-t-il un problème avec l'écriture de parties d'une page Web en XHTML avec un doctype HTML?

StackOverflow https://stackoverflow.com/questions/1040969

  •  22-07-2019
  •  | 
  •  

Question

Je viens tout juste d’apprendre à apprendre le HTML / CSS et j’essaie d’apprendre par moi-même de saines pratiques en matière de programmation Web. Je connais bien XML, donc coder des pages Web en XHTML était assez intuitif et cela me semblait être une bonne chose à faire. Cependant, j'ai lu des articles tels que celui-ci et maintenant je suis ambivalent.

Mes préoccupations concernant le codage en HTML et XHTML proviennent de ce qui suit:

  1. Les balises img n'ont pas besoin d'être fermées en HTML, ce qui me semble logique. Mais en XHTML, les balises img nécessitent une balise close qui semble plutôt funky. Je pense juste que c'est bizarre d'avoir une paire de balises ouvertes et fermées sans rien entre les deux.
  2. Les balises p (comme dans le paragraphe) n’ont pas besoin d’être fermées en HTML, et c’est génial pour moi. Il est logique de séparer un paragraphe entre les balises open et close comme vous le feriez en XHTML.

Ce sont les seuls exemples de base que je puisse citer pour le moment, mais j'espère qu'ils montreront au moins à quel point je suis divisé entre HTML et XHTML. Voici donc ma question: est-il acceptable d’insérer du code XHTML (lorsque j’estime qu’il clarifie quelque chose de manière appropriée) lors du codage d’une page Web qui devrait être au format HTML (avec une DTD HTML)? Je suis sûr que le site Web aurait la même apparence, mais si les gens regardaient ma source, penseraient-ils que je suis un codeur terriblement peu professionnel?

En outre, j'ai consulté aveuglément des didacticiels et des guides sur les pratiques de programmation Web fiables via Google. Je me demandais si vous aviez des conseils / ressources à partager avec moi. Je veux vraiment m'assurer d'apprendre comment faire cela correctement. Je l'apprécierais vraiment.

Merci d'avoir lu!

Modifier: Wow, ces réponses rapides; vous êtes géniaux les gars! Je comprends donc que les navigateurs Web seront assez indulgents pour ce genre de choses. Mon problème est alors une question de vanité et de ce que les autres professionnels pensent de l’écriture d’une sorte de mélange de XHTML et de HTML. Le code strictement conforme est-il la bonne solution? Honnêtement, je ne veux tout simplement pas avoir l'air d'un idiot, haha.

Était-ce utile?

La solution

  Les balises

img n'ont pas besoin d'être fermées en HTML,   et cela a du sens pour moi.

Aucune balise ne doit être fermée. Tous les éléments doivent être fermés.

La plupart des éléments consistent en une balise de début, du contenu et une balise de fin.

Puisqu'un élément d'image ne peut pas avoir de contenu, la balise de fin n'est pas nécessaire. En HTML, les balises de fin sont interdites pour les éléments qui ne peuvent pas avoir de contenu (& "; EMPTY elements &";).

  

Mais en XHTML, les balises img nécessitent une balise close qui semble plutôt funky.

XHTML est une application XML plutôt qu'une application SGML et XML ne possède pas toutes les fonctionnalités proposées par SGML & # 8212; y compris la possibilité de spécifier qu'une balise de fin est interdite.

  

Je pense juste que c'est bizarre d'avoir une paire de balises ouvertes et fermées avec rien entre les deux.

XML introduit un nouveau type de tag & # 8212; une balise à fermeture automatique (<foo />) qui fait office de balise de début et de fin.

Si vous écrivez du XHTML compatible HTML (ce qui devrait être le cas si vous choisissez d'utiliser XHTML et que vous voulez prendre en charge les navigateurs qui ne supportent pas cette langue & # 8212; comme Internet Explorer), vous devrait utiliser cette syntaxe . (Je préfère m'en tenir au HTML moi-même)

  

Les balises p (comme dans le paragraphe) n'ont pas besoin d'être fermées en HTML, et c'est funky pour moi.

De nombreux éléments en HTML comportent des balises de fin facultatives . Cela permet d’omettre la balise de fin quand elle peut être impliquée.

Par exemple:

<p>Hello, world
<p>A second paragraph

Etant donné qu'un élément p ne peut pas contenir un autre élément p, vous pouvez impliquer (avec une fiabilité à 100%) que le démarrage d'un nouveau paragraphe ferme le précédent.

Cela dit, ils sont facultatifs et non interdits. Vous pouvez écrire HTML 4.01 avec des balises de fin explicites pour tout élément qui n'est pas intrinsèquement vide.

  

Puis-je ajouter du code XHTML?   (quand je sens que cela convient   clarifie quelque chose) quand je code   une page Web qui devrait être en HTML   (avec une DTD HTML)? Je suis sûr que le   site web aurait le même aspect, mais si   les gens devaient regarder ma source,   penseraient-ils que j'étais terriblement   codeur non professionnel?

Cela semblerait peu professionnel.

Cela dit, la syntaxe XHTML n'est pas conforme à la syntaxe HTML seulement trois fois:

Éléments vides & # 8212; tels que <img> et <br> doivent être explicitement fermés en XHTML & # 8230; mais vous avez dit que vous n'aimiez pas cette syntaxe.

Scripts et styles & # 8212; vous devez utiliser des références de caractère ou des marqueurs CDATA si vous utilisez certains caractères dans vos fichiers JS et CSS incorporés en XHTML, mais ces éléments sont marqués en tant que CDATA dans la DTD pour HTML, ce qui ne serait pas correct ici & # 8230; mais vous ne devriez pas utiliser les scripts ou les styles incorporés de toute façon.

Espaces de nommage & # 8212; mais il n’ya pas de temps quand utiliser un espace de noms XML au milieu d’un document HTML reviendrait à clarifier quelque chose.

Autres conseils

HTML 5 permet l’utilisation de la syntaxe XHTML.

Vous pouvez maintenant commencer à utiliser un type de document HTML 5 qui poussera tous les navigateurs en mode standard, mais sachez que les nouvelles fonctionnalités de HTML 5 ne sont prises en charge que par certains navigateurs.

Extrait du groupe de travail sur la technologie des applications pour applications hypertextes Web :

  

Dois-je fermer les éléments vides avec / > ou >?

     

Les éléments vides en HTML (par exemple, les éléments br, img et input) ne nécessitent pas de barre oblique finale. par exemple. Au lieu d'écrire <br />, il vous suffit d'écrire <br>. C'est la même chose que dans HTML 4.01. Toutefois, en raison des nombreuses tentatives d’utilisation de XHTML 1.0, un nombre important de pages utilisent le slash de fin. Pour cette raison, la syntaxe de fin de barre oblique a été autorisée sur les éléments void en HTML afin de faciliter la migration de XHTML 1.0 vers HTML5.

Le doctype HTML 5 merveilleusement simple ressemble à ceci:

<!DOCTYPE html>

Alors oui, vous pouvez écrire du code HTML conforme aux normes avec des balises à fermeture automatique et valider contre un validateur HTML 5 . L’industrie a largement choisi d’adopter HTML5 au lieu de XHTML2 et, par conséquent, je ne recommanderais pas l’utilisation de XHTML pour de nouveaux projets.

Edit: Juste pour clarifier les choses, il est prudent d’utiliser le doctype HTML 5 maintenant, et il est également prudent de supposer que HTML 5 sera largement adopté par rapport au XHTML 2, avec l’aide du secteur. Vous pouvez certainement créer des documents HTML 5 à présent, mais de nombreuses fonctionnalités de HTML5, telles que <canvas> (notamment le manque de prise en charge de MS car elle rivalise avec Silverlight), ne prennent pas en charge plusieurs navigateurs et sont sujettes à modification.

C’est correct, dans la mesure où presque tous les navigateurs le rendent correctement, mais uniquement parce qu’ils sont conçus pour gérer du HTML / XHTML / XML malformé. Cependant, tout élément ne correspondant pas au doctype déclaré (dans votre cas, la DTD HTML) empêchera votre code de se valider et, techniquement, il est mal formé.

D'autre part, la grande majorité des sites Web (même ceux qui affichent un rendu correct) ne sont pas validés. Ce n'est donc pas un problème énorme. Je voudrais coller à (strict) XHTML; notez le commentaire de jimr concernant les balises à fermeture automatique (par exemple, <img src="foo" />).

Non, ça ne va pas. En théorie au moins. Si vous écrivez la syntaxe XHTML dans un document HTML, celle-ci n'est pas valide. Les navigateurs le rendront probablement de la même manière, mais il est toujours invalide. De plus, la seule chose valide en XHTML et non valide en HTML est une balise à fermeture automatique (<br />). Juste en HTML, vous n'êtes pas obligé de fermer les balises, cela ne signifie pas que vous ne pouvez pas les fermer. Vous pouvez écrire un balisage comme ceci:

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent at enim sit amet urna placerat porttitor ut quis justo. Quisque posuere nisl ac libero dictum posuere. Suspendisse in magna neque. Donec et vestibulum sapien. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed at nulla dui.</p>

<img src="" alt="">

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent at enim sit amet urna placerat porttitor ut quis justo.</p>

Voir? C'est valide HTML, et semble bon.

BTW: lisez ceci .

<DOCTYPE> est un abandon de SGML et ne doit apparaître qu'une seule fois, en haut du document. Ajouter d'autres déclarations DOCTYPE dans le document constituerait une violation à la fois de HTML et de XHTML - même si la plupart des navigateurs vous pardonneraient probablement.

Si vous devez utiliser les deux dans une page, placer le document imbriqué dans un IFRAME serait peut-être plus conforme aux normes, car les IFRAME, par définition, hébergent un contexte de fenêtre / document distinct.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top