2011-11-08 10 views
5

私の質問は簡単です:HTML属性の改行と特殊文字

以下は有効ですか?たとえそれがあっても、いくつかのブラウザでは壊れますか?文字は属性値でエンコードされ、 "しなければならない"

<div data-text="Blah blah blah 
More blah 
And just a little extra blah to finish"> ... </div> 

?私は"&quot;でなければならないと知っていますが、他にエンコードする必要がありますか?

+0

HTML4についてはどうですか?そこには違うルールがありますか? –

答えて

5

以下は有効ですか?

これは有効なHTML5の断片です。はい。

一部のブラウザでは壊れますか?

そう思わない。

属性値にエンコードする文字はどれですか。私は"&quot;でなければならないと知っていますが、他にエンコードする必要がありますか?

属性値が二重引用符で囲まれているか、一重引用符で囲まれているか、引用符で囲まれていないかによって異なります。

二重引用符の場合は、"は、その文字参照に置き換える必要があります。&は、それに続く文字に応じて文字参照に置き換える必要があります。 attribute-value-double-quoted-state

'は、その文字参照に置き換える必要があり、それに続く文字に応じて&を文字参照に置き換える必要がある場合があります。引用符で囲まれていないフォームTABLINEFEEDFORMFEEDSPACEについてattribute-value-single-quoted-state

を参照してください、>は、その文字参照によって置き換えられなければならない、と&は、それに続く文字に応じて、その文字参照で交換する必要があります。 attribute-value-unquoted-state

+0

[引用符で囲まれていない属性値](http://mathiasbynens.be/notes/unquoted-attribute-values)の一部としてエンコードする必要がある文字がさらにあります。たとえば、 '' '文字をエンコードする必要があります。そうでなければ、無効なHTML5になります。これは、古いIEバージョンでは引用符で囲まれていない属性値から抜け出すのに ''文字を使うことができるからです。指定された属性値が引用符なしで使用できるかどうかを示すツールは次のとおりです:http://mothereff.in/unquoted-attributes#foo%60bar –

+0

'&'をエンコードする必要がある場合はhttp: /mathiasbynens.be/notes/ambiguous-ampersands。 –

1

HTML 5 spec

1つの答えはありませんので、異なる属性のためのさまざまな要件があります。 たとえば、title属性は改行を許可しますが、class属性は文字列トークンのスペースで区切られた行です。データ要素のため

は仕様は、名前空間の言うものの:

がU + 005A(ラテンCAPITAL LETTER Zにラテン大文字A)に範囲U + 0041には文字が含まれていません。

それ以外は何の違いもありません。