Атрибуты в элементах закрывающего тега?

Считается ли действительным делать следующее:

<li>stuff</li class="randomlengthclassname">
<li>stuff</li class="shortclassname">
<li>stuff</li class="reallyreallylongarseclassname">

или атрибут должен быть в открывающем теге?

5 ответов

Решение

Нет, это не так. Вы должны использовать атрибуты в открывающем теге.

Бег <a>test</a href="tst.html"> в валидаторе w3c приводит к этой ошибке:

недопустимый начальный символ имени: здесь разрешены только S-разделители и TAGC

Где S разделителями и TAGC являются:

    S is "whitespace" separator

    [5] s =

        SPACE | (32) space
        RE | (13) CR
        RS | (10) LF
        SEPCHAR (9) HT

            -- http://xml.coverpages.org/sgmlsyn/sgmlsyn.htm#C6.2.1

    TAGC    ">"

            -- http://www.w3.org/TR/sgml.l

Это недопустимо, и все атрибуты должны быть определены в открывающем теге.

Атрибут должен быть в открывающем теге. Код, который вы представили, вероятно, не будет работать.

Атрибуты должны появиться в начальном теге элемента. Цитирование W3C: На SGML и HTML Атрибуты:

... Пары атрибут / значение появляются перед последним ">" начального тега элемента. Любое количество (допустимых) пар значений атрибутов, разделенных пробелами, может появляться в начальном теге элемента. Они могут появляться в любом порядке.

Закрывающие теги могут не содержать атрибутов. Но в HTML4 вы можете опустить закрытие LI:

<!ELEMENT LI - O (%flow;)*             -- list item -->
<!ATTLIST LI
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Start tag: required, End tag: optional

В XHTML вы не можете.

Другие вопросы по тегам