Как должны записываться логические атрибуты?

Я читал некоторые статьи о HTML, XHTML и т.д. В большинстве из них (т.е. Мой предпочтительный стиль синтаксиса) говорят, что boolean атрибуты должны быть записаны без какого-либо значения, например:

<input type="text" required>

Они даже говорят, что использовать эти атрибуты не так:

<input type="text" required="required">

В некоторых статьях ссылка W3, в которой говорится:

Если атрибут присутствует, его значение должно быть либо пустой строкой, либо значением, которое не соответствует значению ASCII для канонического имени атрибута, без начального или конечного пробела.

но в примерах показано так:

Вот пример флажка, который отмечен и отключен. проверенные и отключенные атрибуты являются логическими атрибутами.

<label><input type=checkbox checked name=cheese disabled>Cheese</label>

Это может быть эквивалентно написано следующим образом:

<label><input type=checkbox checked=checked name=cheese disabled=disabled> Cheese</label>

Вы также можете смешивать стили; следующее эквивалентно:

<label><input type='checkbox' checked name=cheese disabled="">Cheese</label>

Итак, как должны записываться логические атрибуты? На основании вашего опыта, какие из вариантов являются кросс-браузерами, а какие нет?

Ответ 1

Атрибуты без значений действительны в HTML, но недействительны в XHTML, потому что это запрещено в XML. Возможно, там, где возникает ваше замешательство. Итак, какой из них действителен, зависит от типа документа вашего документа.

Ответ 2

Я всегда использую checked="checked" и disabled="disabled". У меня нет причин добавлять его, но он всегда работал во всех браузерах, в которых я тестирую. Это включает в себя IE6 +.