web-dev-qa-db-fra.com

Servir la syntaxe XHTML5 en utilisant le type MIME text / html?

J'ai un site actuellement écrit avec des balises HTML5. J'aimerais pouvoir analyser le site au format XML, avec prise en charge des espaces de noms, etc., afin de faciliter l'extraction de données par programme.

Actuellement, j'ai <!DOCTYPE html> et

<meta charset="utf-8">

Ce que je comprends est équivalent en HTML5 à définir explicitement les types de contenu comme

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

pour ma configuration actuelle. Pour servir XML, il semble que la bonne chose à faire est

<?xml version="1.0" encoding="UTF-8"?>
<!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">

Dois-je aussi changer mon type de contenu en

<meta http-equiv="content-type" content="application/xhtml+xml; charset=iso-8859-1" />

Ou n'est-ce pas nécessaire? Quel est l’avantage d’avoir le type de contenu "application/xhtml + xml"? Quel est l'inconvénient? (On dirait que ça peut casser le rendu d'Internet Explorer du site? Mais peut-être que cette information est obsolète maintenant?)

Merci beaucoup!

2
cboettig

On dirait que vous essayez de créer un document polyglotte (et je sonne comme Clippy !). Il s’agit essentiellement d’un document HTML5 qui est également un code XML valide.

Fondamentalement, il vous suffit de poursuivre normalement, en écrivant en HTML5 valide. Vous devrez fermer tous les éléments à fermeture automatique (par exemple, <br> devient <br />, identique pour img, source, hr, etc.) et assurez-vous que les attributs sont cités (par exemple, class="foo", pas class=foo).

Ayez une lecture de ceux-ci:

(certains d'entre eux pourraient être légèrement obsolètes)

Autres notes:

  • Le XHTML 1.0 Strict Doctype que vous avez mentionné dans votre question n'est pas XHTML5 . C'est XHTML 1.0. Utilisez <!DOCTYPE html> à la place.
  • Servir les pages en tant que application/xhtml+xml les empêchera de fonctionner dans IE8 et inférieur. De plus, s'il y a des erreurs dans votre balisage, les navigateurs qui prennent en charge application/xhtml+xml ne rendront pas la page!
  • Vous définissez charset=UTF-8 dans votre exemple HTML5 et charset=iso-8859-1 dans votre XHTML. Ce sont des choses différentes. Si vous ne comprenez pas où et quand les utiliser, utilisez simplement UTF-8 partout.
  • L'utilisation du prologue XML (<?xml version="1.0" encoding="UTF-8"?>) place les anciennes versions de IE dans le "mode Quirks", qui est un mode de rendu hérité et à éviter.
2
Olly Hodgson

Ne pas être hors sujet, mais s'agit-il d'un site généré dynamiquement? Si tel est le cas, pourquoi voulez-vous que les utilisateurs extraient les données de votre balise plutôt que de renvoyer un format plus adapté aux logiciels de lecture de services?

Il me semble que le même objectif pourrait être de servir JSON ou du code XML ou RSS réel aux clients demandant ces flux, sans que vous ayez à vous soucier de savoir si vous envoyez du XHTML.

Le format XHTML est beaucoup moins susceptible d'être aussi efficace qu'un flux dédié, car à moins de renvoyer un balisage HTML vraiment brut, sans style ni manipulation interactive, vous allez envoyer une énorme quantité de fichiers inutiles. analyseur va simplement se défaire de toute façon.

La plupart des frameworks dynamiques fournissent des outils simples pour générer du JSON ou du XML directement à partir de sources de données. Je préconiserais donc de fournir des flux efficaces pouvant être utilisés sans avoir à analyser tous les extras nécessaires au balisage HTML le plus moderne.

Maintenant, s'il ne s'agit pas d'un site généré dynamiquement, je suppose que vous avez peut-être un peu plus de cas d'utilisation, mais je me demanderais alors pourquoi un site statique devrait jamais être utilisé comme source d'alimentation pour un grattoir. .

Désolé, essayez simplement de vous faire une meilleure idée du problème que vous tentez de résoudre, car il existe de nombreuses façons de traiter ce chat, et une solution efficace peut être présentée avec un peu plus de détail.

1
Jason M. Batchelor