私は大規模で大容量の一般向け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"
/>
...
これが検証されるため、すべてのボックスにチェックが入っています:)
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
あなたの例はうまくいくかもしれませんが、キーワード application-name
はWebアプリケーション専用です。
Webアプリケーションではない通常のWebページ、またはapplication-name
を指定しない場合は、いくつかの代替案を参照してください。
head
でdata-*
属性を使用する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>
ボキャブラリーを作成できますが、それは ローカルでの使用には必要ありません です。
<!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>
Data-typeを使用してデータ型やデータ名などのカスタム属性を追加し、実際の名前属性を省略したり、すべてを「abstract」または何かに設定したりすると、データ形式を使用するとどうなりますか?繰り返されるメタ名に問題を与える):
<meta data-name="details" content="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" />
そのため、メタデータを扱うためにそのデータ名を参照できます...
どちらのオプションも技術的には機能しますが、ソリューションは、組織がページ検証についてどのように感じるかによって決まります。
おっしゃるように、カスタムメタデータタグに情報を追加すると、マークアップが無効になります。
私の組織にとって、ページ検証は技術的なアクセシビリティの一部であり、非常に重要だと考えられています。ページの検証を妨げるような行為は許可されません。
新しいメタデータの名前と値は、組織に固有のものであり、一般に使用されるものではないため、登録しようとはしません。
組織で既に機能している場合は、おそらくこの情報をHTMLコメントとして残しておきます。