78

HTML属性の名前=値のペアで、「名前」の部分に使用できる文字は何ですか?.....いくつかの一般的な属性を見ると、文字(azおよびAZ)のみが使用されているように見えますが、他にどのような文字も許可できますか?...おそらく数字(0-9)、ハイフン(-)、およびピリオド(。)...これに関する仕様はありますか?

4

5 に答える 5

61

それはあなたが「許可された」とはどういう意味かによります。各タグには、有効な属性名の固定リストがあり、HTMLでは大文字と小文字は区別されません。重要な意味の1つとして、正しい順序のこれらの文字のみが「許可」されます。

別の見方をすれば、ブラウザが有効な属性名として扱う文字です。ここでの最良のアドバイスは、HTML 5のパーサー仕様から得られます。これは、https ://html.spec.whatwg.org/multipage/syntax.html#attributes-2にあります。

タブ、改行、フォームフィード、スペース、スラッシュ、大なり記号、引用符、アポストロフィ、等号を除くすべての文字が属性名の一部として扱われることを示しています。個人的には、私はこれのエッジケースをプッシュしようとはしませんでした。

于 2009-05-29T14:01:05.660 に答える
29

XHTMLについて話していると仮定すると、XMLルールが適用されます。

http://www.w3.org/TR/2008/REC-xml-20081126/#NT-Nameを参照してください

名前とトークン

[4]     NameStartChar      ::=      ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
[4a]    NameChar       ::=      NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
[5]     Name       ::=      NameStartChar (NameChar)*
[6]     Names      ::=      Name (#x20 Name)*
[7]     Nmtoken    ::=      (NameChar)+
[8]     Nmtokens       ::=      Nmtoken (#x20 Nmtoken)*
于 2009-05-29T13:39:58.230 に答える
20

この質問がなされて以来、ウェブはかなり進化してきました。Webコンポーネント(カスタム要素)の作成者は、カスタム要素の属性を定義するときに使用できる有効な名前を学習しようとしてここに到着している可能性があります。

ここには部分的に正しい答えがいくつかあるので、それらを集約して、最近の仕様に基づいて更新してみます。

まず、HTML5では、属性名はほとんどの文字で始めることができ、以前のバージョンのHTMLよりもはるかに寛容です。@ S.Lottの答えは、HTML 2とXHTMLには正しいですが、HTML5には正しくありません。

HTML5の場合:(仕様

属性名は、スペース文字以外の1つ以上の文字、U + 0000 NULL、U + 0022引用符( ")、U + 0027 APOSTROPHE(')、U + 003E GREATER-THAN SIGN(>)、U+で構成する必要があります。 002F SOLIDUS(/)、およびU + 003D EQUALS SIGN(=)文字、制御文字、およびUnicodeで定義されていない文字。HTML構文では、属性名は、外部要素の場合でも、任意の文字で記述できます。属性の名前とASCIIの大文字と小文字を区別しない一致である小文字と大文字の組み合わせ。

そうは言っても、ここにある他のコメントは正しいです。有効な属性のリストにない組み込み要素の属性を使用すると、技術的に仕様に違反していることになります。ただし、ブラウザの作成者はこれに対して多くの許容範囲を持っているため、実際には害はありません。多くのライブラリはこれを利用して通常のHTMLタグを拡張しますが、これは技術的に有効なHTMLではないため、混乱を招きます。HTML5は、データ属性の命名規則を使用して、属性内のカスタムデータのメカニズムを提供します。

これらのルールは、カスタム要素では異なります。

カスタム要素の作成者は、要素に好きな種類の属性を実装できますが、属性の名前はHTML5よりも制限されています。実際、この仕様では、属性名がXML名の制限に従う必要があります。

ASCIIシンボルと句読点は、Unicodeシンボル文字のかなり大きなグループとともに、XML名がXMLドキュメントの外部で使用されるコンテキストでの区切り文字としてより役立つため、名前から除外されます。このグループを提供することで、これらのコンテキストにXML名の一部にできないものについての厳しい保証が与えられます。文字#x037E、ギリシャ語の疑問符は、正規化するとセミコロンになり、エンティティ参照の意味が変わる可能性があるため、除外されています。

名前とトークン

[4] NameStartChar :: = ":" | [AZ] | "_" | [az] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]

[4a] NameChar :: = NameStartChar | "-" | 「。」| [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]

[5]名前::=NameStartChar(NameChar)*

[6]名前::=名前(#x20名前)*

[7] Nmtoken :: =(NameChar)+

[8] Nmtokens :: = Nmtoken(#x20 Nmtoken)*

したがって、カスタム要素名の場合、開始文字として上/下の英数字、「_」アンダースコア、「:」コロン、または仕様で呼び出された任意のUnicode文字を使用してから、ダッシュ「-」、ドット「」を使用できます。 "、アルファなど...本文の文字として。

于 2018-11-30T19:38:30.360 に答える
8

何かが足りないかもしれませんが、質問は誤った仮定に基づいていると思います。HTMLでは、属性は固定仕様に従って厳密に定義されます。独自の属性名を「作成」すると、有効なHTMLを記述できなくなります。

于 2009-05-29T13:44:39.500 に答える
0

許可される値は、w3.orgにリストされています。カスタム属性を追加すると、HTMLを作成しなくなります。

于 2009-05-29T13:38:54.490 に答える