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

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

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

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


person Hailwood    schedule 30.08.2010    source источник
comment
Нет, это недействительно. Да, они должны быть.   -  person Yi Jiang    schedule 30.08.2010


Ответы (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
person Oded    schedule 30.08.2010

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

person Romain Linsolas    schedule 30.08.2010

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

person rhino    schedule 30.08.2010

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

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

person Daniel Vassallo    schedule 30.08.2010

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

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

Start tag: required, End tag: optional

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

person Gordon    schedule 30.08.2010