it-swarm.com.de

Best Practice für Metadaten in einem HTML-Dokument?

Ich arbeite an einer großen, öffentlichen Webanwendung mit hohem Volumen. Der erfolgreiche Betrieb der Anwendung ist für das Unternehmen sehr wichtig. Daher gibt es eine Reihe von MI-Tools, die gegen diese Anwendung laufen.

Eines dieser MI-Tools befasst sich im Wesentlichen mit dem HTML-Code, der für jede Seitenanforderung an den Browser gesendet wird.

Damit dieses MI-Tool die erforderlichen Daten erhält, fügen wir Metadaten in das head-Element ein. Derzeit machen wir es als HTML-Kommentare:

<!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-->
    ...

Und das Tool sucht einfach nach einem bestimmten Metadatenkommentar mit einer Regex

Da es sich bei diesen Daten um Metadaten handelt, möchte ich sie in HTML-Metatags ändern, da sie sich semantisch korrekt anfühlen. Etwas wie das:

<!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" />
    ...

Das fühlt sich semantischer an, und ich kann das MI-Tool dazu bringen, damit kein Problem zu lösen - es handelt sich lediglich um eine Änderung der Regex. Jetzt gibt es jedoch ein Problem mit dem W3C-Validator. Es wird nicht validiert, da die von mir verwendeten Metanamen nicht erkannt werden. Ich erhalte die Fehlermeldung "Ungültige Wertedetails für Attributnamen in Element-Meta: Keyword-Details werden nicht registriert." und es schlägt vor, dass ich diese Namenswerte im WHATWG-Wiki registriere.

Während ich dies tun konnte, fühlt es sich nicht richtig an. Einige meiner Meta-Tags sind "generisch" (wie error und emailAddress), daher könnte ich wahrscheinlich einen bereits registrierten Namenswert finden und diesen verwenden. Die meisten von ihnen sind jedoch branchenspezifisch. Es fühlt sich falsch an, einen öffentlichen Namenswert namens subsessionid oder partyId zu registrieren, da diese für meine Organisation und die Anwendung spezifisch sind.

Die Frage ist also: Was ist in diesem Fall die beste Praxis? Soll ich sie als HTML-Kommentare hinterlassen? Sollte ich Meta-Tags wie oben verwenden und nicht befürchten, dass die W3C-Validierung fehlschlägt? (obwohl dies für die Organisation immer wichtiger wird) Sollte ich versuchen, meine Metanamenswerte im WHATWG-Wiki zu registrieren, aber wissen, dass sie nicht sehr allgemein sind? Oder gibt es eine andere Lösung?

Schätzen Sie Ihre Gedanken, Jubel

Nathan


Bearbeitet, um die endgültige Lösung anzuzeigen:

Die vollständige Antwort, mit der ich gehe, lautet wie folgt. Seine Antwort basiert auf Rich Bradshaws Antwort, also ist er die akzeptierte, aber dies ist das, was ich der Vollständigkeit halber gehe:

<!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"
    />
    ...

Dies bestätigt, also alle Kästchen angekreuzt :)

63
Nathan Russell

Die W3C-Validierung ist bedeutungslos. HTML! = XML, daher gibt es kein Schema, um es zu überprüfen. Kein Browser wird verschlucken, weil Sie ein Metaelement mit einem nicht registrierten Namen hinzugefügt haben. Wenn Sie wirklich besorgt sind, können Sie das Datenattribut für ein Meta-Element verwenden:

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

zumindest wissen Sie dann, dass keine zukünftige Spezifikation für Ihre Daten Sinn ergibt.

Weitere Informationen finden Sie unter: http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#custom-data-attribute

34
Rich Bradshaw

Beachten Sie, dass das Schlüsselwort application-name nur für Web-Anwendungen gilt.

Für gewöhnliche Webseiten, die keine Webanwendungen sind, oder wenn kein application-name angegeben werden soll, siehe einige Alternativen:

data-*-Attribute in der head verwenden

Ein meta-Element ist nicht erforderlich.

<!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>

Verwendung von Microdata

Sie können ein Vokabular erstellen, aber das ist für den lokalen Gebrauch nicht erforderlich .

<!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>

Daten in einer script verwenden

Das script-Element kann für Datenblöcke verwendet werden. Sie können jedes Format auswählen, das Ihren Bedürfnissen entspricht. Beispiel mit Klartext:

<!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

Was passiert, wenn Sie versuchen, das Datenformat zu verwenden, um ein benutzerdefiniertes Attribut hinzuzufügen, etwa Datentyp oder Datenname, und das eigentliche Namensattribut weglassen oder vielleicht alles auf "abstrakt" oder etwas setzen (ich weiß es nicht, wenn der Prüfer dies tut Probleme bei wiederholten Metanamen geben):

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

Sie könnten also auf diesen Datennamen verweisen, um mit Ihrem Meta-Zeug zu arbeiten ...

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

2
Onheiron

Jede dieser Optionen würde technisch funktionieren, auch wenn die Lösung möglicherweise davon abhängt, wie sich Ihre Organisation mit der Validierung von Seiten befasst.

Wenn Sie Informationen zu benutzerdefinierten Metadaten-Tags hinzufügen, wird Ihre Markierung ungültig.

Für meine Organisation ist die Seitenvalidierung Teil der technischen Zugänglichkeit und wird als sehr wichtig angesehen. Es ist nicht zulässig, alles zu tun, was die Validierung von Seiten verhindert.

Ich würde nicht versuchen, neue Metadatennamen und -werte zu registrieren, da diese für Ihre Organisation spezifisch sind und nicht für den öffentlichen Gebrauch bestimmt sind.

Ich würde diese Informationen wahrscheinlich als HTML-Kommentar hinterlassen, wenn dies bereits für Ihre Organisation funktioniert.

0
Stef Robinson