【问题标题】:Attributes in elements closing tag?元素结束标记中的属性?
【发布时间】:2011-04-05 17:21:21
【问题描述】:

执行以下操作是否有效:

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

或者属性是否在开始标签中?

【问题讨论】:

  • 不,它无效。是的,他们必须是。

标签: html web-standards


【解决方案1】:

不,不是。您必须在开始标记中使用属性。

w3c validator 中运行&lt;a&gt;test&lt;/a href="tst.html"&gt; 会导致此错误:

名称起始字符无效:此处仅允许 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

【讨论】:

    【解决方案2】:

    这是无效有效的,所有属性都必须在开始标记中定义,确实。

    【讨论】:

      【解决方案3】:

      属性必须在开始标记中。您提供的代码可能不起作用。

      【讨论】:

        【解决方案4】:

        属性应该出现在元素的 start 标记中。引用W3C: On SGML and HTML Attributes

        ... 属性/值对出现在元素开始标记的最后一个“>”之前。任意数量的(合法的)属性值对(以空格分隔)可以出现在元素的开始标记中。它们可以按任何顺序出现。

        【讨论】:

          【解决方案5】:

          Closing tags may not contain attributes. 但是在HTML4 中你可以省略结束LI

          <!ELEMENT LI - O (%flow;)*             -- list item -->
          <!ATTLIST LI
            %attrs;                              -- %coreattrs, %i18n, %events --
            >
          
          Start tag: required, End tag: optional
          

          在 XHTML 中,你可能不会。

          【讨论】:

            猜你喜欢
            • 2021-08-28
            • 1970-01-01
            • 1970-01-01
            • 2012-02-11
            • 2015-07-05
            • 2018-06-02
            • 1970-01-01
            • 2018-04-20
            • 2018-05-05
            相关资源
            最近更新 更多