Question

Je connais le but de DOCTYPE (et le nom de chaque URL / identifiant sur la ligne) en ce qui concerne les normes Web et la validation de page, mais je ne suis pas sûr de savoir en quoi il correspond & "; &"; dans le contexte d'un document XML.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
    <title>My Page</title>
  </head>
  <body>
    <p>Hello</p>
  </body>
</html>

Cela fait-il partie de la structure même du document XML ou s'agit-il d'un type de commentaire " hint " qui est noté puis dépouillé?

Quelle est la signification de & ";! &"; avant le nom? Est-ce que cela dénote un type spécial de & Quot; élément & Quot; Comment s'appellent-ils?

L'exemple que j'ai posté est XHTML pour le Web, mais DOCTYPE est-il également utilisé dans les documents XML d'usage général?

Était-ce utile?

La solution

DOCTYPE a été " hérité " de SGML (il était supposé pointer sur un fichier DTD qui explique comment analyser le fichier), mais la syntaxe XML et les espaces de noms auto-explicatifs le rendaient en grande partie hors de propos. La seule utilisation réelle de DOCTYPE / DTD dans XML consiste à définir des entités nommées autorisées (par exemple, &nbsp;).

La spécification XML autorise même " ne pas valider " analyseurs qui ignorent complètement le fichier DTD (les navigateurs Web les utilisent, sauf si vous êtes tombé dans le piège text/html, auquel cas l’analyseur XML n’est pas utilisé du tout).

DTD est assez médiocre aux fins de la validation (difficile de spécifier des règles pour plusieurs niveaux d'imbrication, impossible de spécifier des types d'attributs au-delà de quelques types prédéfinis). Schema, RelaxNG peut être beaucoup plus précis.

DTD ne prend pas non plus complètement en charge les espaces de noms, ce qui conduit à des solutions de rechange ridicules telles que XHTMLplusMathMLplusSVG DOCTYPE .

Dans les navigateurs Web, certains DOCTYPE ont pour effet secondaire souhaitable de déclencher un mode de rendu conforme aux normes . C’est plus un bidouillage que les DOCTYPE à utiliser.

  • Si vous utilisez du vrai XHTML (application/xhtml+xml & # 8211; celui qui ne s'ouvre pas du tout dans IE), n'utilisez pas du tout DOCTYPE (c'est la recommandation de XHTML 5 ). Le mode XML déclenchera un rendu conforme aux normes quel que soit DOCTYPE.

  • Si vous utilisez le mode <!DOCTYPE html>, utilisez &#160;. C'est HTML 5 DOCTYPE et le plus court qui déclenche le meilleur rendu possible dans tous les navigateurs. Les navigateurs n'utilisent DOCTYPE à aucune autre fin, vous ne perdez donc rien.

  • Si vous traitez des fichiers XHTML avec des analyseurs XML (en dehors des navigateurs), s'il vous plaît n'oubliez pas de configurer correctement le catalogue DTD, sinon votre analyseur pourrait être DoS-ing w3.org essayant d'extraire la DTD à chaque fois. Si vous ne pouvez pas utiliser le catalogue DTD, désactivez & Quot; externals & Quot; dans l'analyseur ou omettez DOCTYPE et n'utilisez pas d'entités nommées (c'est-à-dire utilisez <=> plutôt que <=>)

Autres conseils

DOCTYPE fait partie de la spécification XML (voir la sous-section correspondante ici ) et peut inclure un lien vers un DTD , " internal " Déclarations DTD, ou les deux. Beaucoup de & "; Modernes &"; Les utilisations de XML n'utilisent pas du tout de type DOCTYPE, cependant - comme le mentionne porneL, XML Schema et RelaxNG sont des moyens plus puissants de spécifier la syntaxe d'un document. Voir cet article de blog de Tim Bray . pour un peu plus de contexte.

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