81

私は、大規模で大量の公開 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 = user@email.com -->
    <!-- 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="user@email.com" />
    <meta name="error" content="49" />
    <meta name="subsessionid" content="bffd5bc0-a03e-42e5-a531-50529dae57e3" />
    ...

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

私はこれを行うことができましたが、それは正しくありません。私のメタ タグの一部は「汎用」(error や 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="user@email.com"
        data-error="49"
        data-subsessionid="bffd5bc0-a03e-42e5-a531-50529dae57e3"
    />
    ...

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

4

4 に答える 4

50

W3C の検証は無意味です。HTML != XML であるため、検証するスキーマはありません。未登録の名前のメタ要素を追加したため、ブラウザーがチョークすることはありません。本当に心配なら、次のような meta 要素で data 属性を使用できます。

<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 を参照してください。

于 2012-05-10T12:37:18.103 に答える
39

application-nameあなたの例はうまくいくかもしれませんが、キーワードはWeb アプリケーション専用であることに注意してください。

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

data-*での属性の使用head

meta要素は必要ありません。

<!DOCTYPE html>
<html>
<head
    data-details="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" 
    data-policyId="1234567890"
    data-partyId="0987654321"
    data-emailAddress="user@email.com"
    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:user@email.com" /> <!-- 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 = user@email.com
    error = 49
    subsessionid = bffd5bc0-a03e-42e5-a531-50529dae57e3
  </script>
</head>
于 2013-10-10T14:30:47.130 に答える
2

data- 形式を使用してカスタム属性をそれらに追加しようとするとどうなりますか? data-type や data-name のようなもので、実名属性を省略したり、すべてを「abstract」などに設定したりします (バリデーターがメタ名が繰り返されると問題が発生します):

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

したがって、そのデータ名を参照してメタデータを操作できます...

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

于 2012-05-10T12:35:17.823 に答える
-1

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

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

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

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

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

于 2012-05-10T12:24:35.190 に答える