Новые строки и специальные символы в атрибутах HTML

#html

#HTML

Вопрос:

Мои вопросы просты:

Допустимо ли следующее? Если это так, будет ли это ломаться в некоторых браузерах?

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

Какие символы «должны» быть закодированы в значениях атрибутов? Я знаю, что " должно быть amp;quot; , но требуются ли какие-либо другие для кодирования?

Комментарии:

1. Как насчет HTML4? Отличаются ли там правила?

Ответ №1:

Допустимо ли следующее?

Это допустимый фрагмент HTML5, да.

может ли это сломаться в некоторых браузерах?

Маловероятно.

Какие символы «должны» быть закодированы в значениях атрибутов? Я знаю, что " должно быть amp;quot; , но требуются ли какие-либо другие для кодирования?

Это зависит от того, заключено ли значение атрибута в двойные, одинарные кавычки или без кавычек.

Для формы, заключенной в двойные кавычки, " должна быть заменена ссылка на символ, и amp; возможно, потребуется заменить ссылку на символ в зависимости от символов, которые следуют за ней. Смотрите атрибут-значение-вдвойныхкавычках-состояние

Для формы, заключенной в одинарные кавычки, ' должна быть заменена ссылкой на символ, и amp; может потребоваться заменить ссылку на символ в зависимости от символов, которые следуют за ней. Смотрите attribute-value-состояние в одинарныхкавычках

Для формы без кавычек TAB , LINEFEED , FORMFEED , SPACE , > amp; должны быть заменены ссылками на их символы, и,, возможно, потребуется заменить ссылкой на его символ в зависимости от символов, которые следуют за ним. Смотрите атрибут-значение-без кавычек-состояние

Комментарии:

1. Есть еще символы, которые должны быть закодированы как часть значения атрибута без кавычек . Например, символ « должен быть закодирован, иначе это будет недопустимый HTML5. Причина этого в том, что символ « может использоваться для выделения значения атрибута без кавычек в старых версиях IE. Вот инструмент, который сообщит вам, можно ли использовать данное значение атрибута без кавычек: mothereff.in/unquoted-attributes#foo`bar

2. Что касается того, когда amp; необходимо кодировать, см. mathiasbynens.be/notes/ambiguous-ampersands .

Ответ №2:

Спецификация HTML 5

Существуют разные требования к разным атрибутам, поэтому единого ответа нет. Например, атрибуты title допускают перевод строк, но атрибут class представляет собой разделенную пробелом строку строковых маркеров.

Для элементов данных, хотя в спецификации указано пространство имен:

не содержит символов в диапазоне от U 0041 до U 005A (от ЛАТИНСКОЙ ЗАГЛАВНОЙ БУКВЫ A до ЛАТИНСКОЙ ЗАГЛАВНОЙ БУКВЫ Z).

Кроме этого, это не делает никаких различий.