web-dev-qa-db-ja.com

HTMLドキュメントのメタデータのベストプラクティスですか?

私は大規模で大容量の一般向けWebアプリケーションに取り組んでいます。アプリケーションの正常な動作はビジネスにとって非常に重要であるため、それに対して実行される多くのMIツールがあります。

これらのMIツールの1つは、基本的に各ページリクエストごとにブラウザに送信されるhtmlを調べます(かなり単純化しましたが、この質問の目的のために、htmlで分析を行うツールです)

このMIツールが必要なデータを取得するために、head要素にメタデータを配置します。現在、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-->
    ...

また、このツールは、正規表現で特定のメタデータコメントを検索するだけです

このデータはメタデータなので、セマンティック的に正しいと感じるため、これをhtmlメタタグに変更したいと思います。このようなもの:

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

これはより意味があり、MIツールを問題なく動作させることができます-正規表現を変更するだけです。しかし、今ではw3cバリデータに問題があります。使用しているメタ名が認識されないため、検証されません。 「要素メタの属性名の悪い値の詳細:キーワードの詳細が登録されていません。」というエラーが表示されます。そして、これらの名前の値をWHATWG wikiに登録することをお勧めします。

私はこれを行うことができましたが、それは正しいとは感じていません。私のメタタグの一部は 'generic'(エラーやemailAddressなど)であるため、既に登録されている名前の値を見つけて使用できます。ただし、それらのほとんどは業界/組織固有です。 subsessionidまたはpartyIdと呼ばれるパブリック名の値を登録するのは間違っています。これらは私の組織とアプリケーションに固有のものです。

だから、問題は-この場合のベストプラクティスとは何ですか? HTMLコメントとして残す必要がありますか?上記のようにメタタグを使用する必要があり、w3c検証が失敗する心配はありませんか? (それは組織にとってますます重要になっていますが)メタ名の値をWHATWG wikiに登録しようとする必要がありますが、それらがあまり一般的ではないことを知っていますか?それとも別の解決策がありますか?

あなたの考えを感謝し、乾杯

ネイサン


最終的なソリューションを表示するように編集されました。

私が一緒に行く完全な答えは次のとおりです。 Rich Bradshawsの回答に基づいているため、彼は受け入れられていますが、これは完全を期すために行っているものです。

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

これが検証されるため、すべてのボックスにチェックが入っています:)

67
Nathan Russell

W3C検証は無意味です。 HTML!= XMLなので、検証するスキーマはありません。登録されていない名前のメタ要素を追加したため、ブラウザが停止することはありません。本当に心配な場合は、次のようなメタ要素のデータ属性を使用できます。

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

少なくとも、将来の仕様がデータに意味を与えることはないことを知っています。

詳細については、以下を参照してください: http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#custom-data-attribute

37
Rich Bradshaw

あなたの例はうまくいくかもしれませんが、キーワード application-nameWebアプリケーション専用です。

Webアプリケーションではない通常のWebページ、またはapplication-nameを指定しない場合は、いくつかの代替案を参照してください。

headdata-*属性を使用する

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>

Microdataを使用する

ボキャブラリーを作成できますが、それは ローカルでの使用には必要ありません です。

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

scriptでデータを使用する

script要素 データブロックに使用可能 。ニーズに合った形式を選択できます。プレーンテキストの例:

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

Data-typeを使用してデータ型やデータ名などのカスタム属性を追加し、実際の名前属性を省略したり、すべてを「abstract」または何かに設定したりすると、データ形式を使用するとどうなりますか?繰り返されるメタ名に問題を与える):

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

そのため、メタデータを扱うためにそのデータ名を参照できます...

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

2
Onheiron

どちらのオプションも技術的には機能しますが、ソリューションは、組織がページ検証についてどのように感じるかによって決まります。

おっしゃるように、カスタムメタデータタグに情報を追加すると、マークアップが無効になります。

私の組織にとって、ページ検証は技術的なアクセシビリティの一部であり、非常に重要だと考えられています。ページの検証を妨げるような行為は許可されません。

新しいメタデータの名前と値は、組織に固有のものであり、一般に使用されるものではないため、登録しようとはしません。

組織で既に機能している場合は、おそらくこの情報をHTMLコメントとして残しておきます。

0
Stef Robinson