web-dev-qa-db-fra.com

Meilleure pratique pour les métadonnées dans un document HTML?

Je travaille sur une application Web grand public à volume élevé. Le bon fonctionnement de l'application est très important pour l'entreprise. Un certain nombre d'outils MI sont donc utilisés à cet égard.

L'un de ces outils MI examine essentiellement le code HTML envoyé au navigateur pour chaque demande de page (je l'ai beaucoup simplifié, mais pour les besoins de cette question, il s'agit d'un outil d'analyse du code HTML).

Pour que cet outil MI puisse obtenir les données dont il a besoin, nous avons placé des métadonnées dans l'élément head. Actuellement, nous le faisons sous forme de commentaires HTML:

<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class="">
<head>
    <!-- details = 52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009] -->
    <!-- policy id = 1234567890 -->
    <!-- party id = 0987654321 -->
    <!-- email address = [email protected] -->
    <!-- error = 49 -->
    <!-- subsessionid = bffd5bc0-a03e-42e5-a531-50529dae57e3-->
    ...

Et l'outil recherche simplement un commentaire de métadonnées donné avec une expression régulière

Comme ces données sont des méta-données, j'aimerais les remplacer par des balises méta HTML, car elles semblent sémantiquement correctes. Quelque chose comme ça:

<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class="">
<head>
    <meta name="details" content="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" />
    <meta name="policyId" content="1234567890" />
    <meta name="partyId" content="0987654321" />
    <meta name="emailAddress" content="[email protected]" />
    <meta name="error" content="49" />
    <meta name="subsessionid" content="bffd5bc0-a03e-42e5-a531-50529dae57e3" />
    ...

Cela semble plus sémantique et je peux faire en sorte que l'outil MI fonctionne sans problème - il suffit de changer les expressions rationnelles. Cependant, cela me pose maintenant un problème avec le validateur W3C. Il ne sera pas validé car les méta-noms que j'utilise ne sont pas reconnus. Je reçois le message d'erreur "Détails de la valeur incorrecte pour le nom de l'attribut sur la méta de l'élément: les détails du mot clé ne sont pas enregistrés." et cela suggère que j'inscrive ces valeurs de nom sur le wiki WHATWG.

Bien que je puisse le faire, ça ne me semble pas bien. Certaines de mes balises META sont «génériques» (telles que error et emailAddress). Je pourrais donc probablement trouver une valeur de nom déjà enregistrée et l'utiliser. Cependant, la plupart d'entre eux sont spécifiques à l'industrie/l'organisation. Il est erroné d'enregistrer un nom public appelé subsessionid ou partyId, car ils sont spécifiques à mon organisation et à l'application.

La question est donc de savoir quelle est la meilleure pratique dans ce cas. Dois-je les laisser sous forme de commentaires HTML? Devrais-je utiliser les balises méta comme ci-dessus et ne pas m'inquiéter de l'échec de la validation W3C? (Bien que cela soit de plus en plus important pour l’organisation) Devrais-je essayer d’enregistrer mes valeurs de méta-noms sur le wiki WHATWG, tout en sachant qu’elles ne sont pas très génériques? Ou y a-t-il une autre solution?

Appréciez vos pensées, acclamations

Nathan


Edité pour montrer la solution finale:

La réponse complète que je vais avec est la suivante. C'est basé sur la réponse de Rich Bradshaw, donc c'est la réponse acceptée, mais voici ce que je veux que soit complet:

<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class="">
<head>
    <meta name="application-name" content="Our app name" 
        data-details="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" 
        data-policyId="1234567890"
        data-partyId="0987654321"
        data-emailAddress="[email protected]"
        data-error="49"
        data-subsessionid="bffd5bc0-a03e-42e5-a531-50529dae57e3"
    />
    ...

Ceci valide, donc toutes les cases sont cochées :)

63
Nathan Russell

La validation du W3C n'a pas de sens. HTML! = XML, donc il n'y a pas de schéma pour le valider. Aucun navigateur n'étouffera, car vous avez ajouté un méta-élément avec un nom non enregistré. Si vous êtes vraiment inquiet, vous pouvez utiliser l'attribut data sur un méta-élément tel que:

<meta data-details="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" data-policyId="0123456789" />

au moins, vous savez qu'aucune spécification future ne donnera un sens à vos données.

Pour plus d'informations, lisez: http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#custom-data-attribute

34
Rich Bradshaw

Bien que votre exemple puisse fonctionner, notez que le mot clé application-name concerne uniquement les applications Web.

Pour les pages Web habituelles qui ne sont pas des applications Web, ou si aucun application-name ne doit être fourni, voir quelques alternatives:

Utilisation des attributs data-* dans la head

Pas besoin d'un élément meta.

<!DOCTYPE html>
<html>
<head
    data-details="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" 
    data-policyId="1234567890"
    data-partyId="0987654321"
    data-emailAddress="[email protected]"
    data-error="49"
    data-subsessionid="bffd5bc0-a03e-42e5-a531-50529dae57e3">
</head>

Utilisation de microdonnées

Vous pouvez créer un vocabulaire, mais cela est non requis pour une utilisation locale .

<!DOCTYPE html>
<html>
<head itemscope>
  <meta itemprop="details" content="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" />
  <meta itemprop="policyId" content="1234567890" />
  <meta itemprop="partyId" content="0987654321" />
  <link itemprop="emailAddress" href="mailto:[email protected]" /> <!-- or use a meta element if you don’t want to provide a full URI with "mailto:" scheme -->
  <meta itemprop="error" content="49" />
  <meta itemprop="subsessionid" content="bffd5bc0-a03e-42e5-a531-50529dae57e3" />
</head>

Utiliser des données dans une script

L'élément scriptpeut être utilisé pour les blocs de données . Vous pouvez choisir n'importe quel format qui correspond à vos besoins. Exemple avec texte brut:

<!DOCTYPE html>
<html>
<head>
  <script type="text/plain">
    details = 52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]
    policyId = 1234567890
    partyId = 0987654321
    emailAddress = [email protected]
    error = 49
    subsessionid = bffd5bc0-a03e-42e5-a531-50529dae57e3
  </script>
</head>
25
unor

Que se passe-t-il si vous essayez d’ajouter un attribut personnalisé au format de données, quelque chose comme type de donnée ou nom de donnée et omettre l’attribut nom réel ou éventuellement le définir comme "abstrait" ou quelque chose de différent donner des problèmes pour les méta-noms répétés):

<meta data-name="details" content="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" />

Vous pouvez donc faire référence à ce nom de données pour travailler avec vos méta-trucs ...

http://html5doctor.com/html5-custom-data-attributes/

2
Onheiron

L'une ou l'autre option fonctionnerait techniquement, bien que la solution puisse dépendre de l'opinion de votre organisation sur la validation des pages.

Comme vous le dites, l'ajout d'informations dans des balises de métadonnées personnalisées invalidera votre marquage.

Pour mon organisation, la validation de page fait partie de l'accessibilité technique et est considérée comme très importante. Tout ce qui empêcherait la validation des pages ne serait pas autorisé.

Je ne tenterais pas d'enregistrer de nouveaux noms et valeurs de métadonnées car ils sont spécifiques à votre organisation et ne sont pas destinés à un usage public.

Je laisserais probablement ces informations sous forme de commentaires HTML si cela fonctionne déjà pour votre organisation.

0
Stef Robinson