如何在html5中找到空元素

时间:2018-01-13 07:42:29

标签: html

html 5中的空元素是什么?

从以下选项中我如何找到空元素?

1. <br/>
2. <p> </p>
3. </img>
4. </p>

提前致谢

3 个答案:

答案 0 :(得分:1)

术语&#34;空元素&#34;来自SGML,HTML5之前的HTML标准基于SGML,其中EMPTY关键字用于表示具有空内容模型的元素。这是HTML 4 spec所说的内容:

  

元素的允许内容称为内容模型。设计为没有内容的元素类型称为空元素。使用关键字&#34; EMPTY&#34;。

声明此类元素类型的内容模型

使用img元素的示例声明:

  

此示例说明了空元素类型的声明:

<!ELEMENT IMG - O EMPTY>
     
      
  • 声明的元素类型为 IMG
  •   
  • 连字符和以下&#34; O&#34;表示可以省略结束标记,但是与内容模型&#34; EMPTY&#34;一起,这被加强到结束标记必须被省略的规则。
  •   
  • &#34; EMPTY&#34; keyword表示此类型的实例不得包含内容。
  •   

XML定义了一个&#34;空元素&#34;完全不同:

  

[定义:没有内容的元素据说为空。]

这里的不同之处在于XML并没有说出一个&#34;空元素&#34;是&#34;内容模型为空的元素&#34;。相反,它只是说一个&#34;空元素&#34;是一个没有内容的人。这与文档类型或XML模式是否定义该特定元素是否必须没有内容无关; XML本身就没有这样的限制。

附加术语&#34;空元素标记&#34;用于描述通常用于指示空元素的快捷语法/>(同样,无论它们是否为空,按定义)。这通常也被称为&#34;自我关闭&#34;语法。

术语&#34; void element&#34;是HTML5的新手。它与&#34;空元素&#34;的HTML5前定义具有相同的定义:即,的元素具有开始标记,没有结束标记,并且不能包含任何内容。虽然W3C HTML5规范没有引用术语&#34;空元素&#34;,但术语&#34;空元素标签&#34;如XML中所述,用于related document

  

在HTML语法中,void元素是始终为空且永远不会有结束标记的元素。列为void in the HTML specification或扩展规范中的所有元素,必须在多语言标记中具有XML empty-element tag<foo/>)的语法形式。其他元素绝不能使用XML空元素标记语法。

现代HTML标准现在似乎更喜欢XML定义并避开以前的定义。这似乎很合适,因为现代HTML不再是SGML应用程序,而是一种标记语言本身。 (它也不是XML,而是多语言标记发挥作用的地方。)

所以,

  • 空元素 没有内容的元素,无论是否允许首先包含内容。

答案 1 :(得分:1)

在这种情况下 - 空意味着没有内容,没有孩子 - 从这个演示中可以看出 - 甚至空白都算作内容 - 所以只有一个:列表中的空li(<li></li>)并使用你帖子中的元素(修改为正确的hte结构<img/>也显示为空。

&#13;
&#13;
#emptyTest * {
  display:block; 
  min-width:100px;
  min-height:30px;
}

#emptyTest *:empty {
  background:red;
}
&#13;
<div id = "emptyTest">
  <ul>
    <li>1</li>
    <li></li>
    <li> </li>
  </ul>
  
  <br/>
  <p> </p>
  <img/>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

正如Harsh Patel指出的那样,空元素的概念来自SGML,HTML就是以此为基础的。

在SGML中,空元素是声明如下的元素:

<!ELEMENT x - - EMPTY>

或只是

<!ELEMENT x EMPTY>

(其中- -字符是标记省略指示符,SGML的另一个特征是不要与空元素混淆;您可以在SGML或my attempt at a modern account on SGML中的任何文本中阅读更多相关内容。

SGML空元素,当遵循传统的SGML解析规则时,必须不具有终端元素标记。在SGML的更新WebSGML(ISO 8879附件K)修订版中,根据有效 SGML声明的EMPTY设置,可以容忍具有声明内容FEATURES MINIMIZE EMPTYNRM的元素的终端元素标记(SGML解析器的一组解析标志和属性)。

ISO 8879附件K于1999年发布,旨在使SGML与XML保持一致,这是由W3C成员引入的新的SGML子集/配置文件,用于简化解析,旨在最终取代SGML作为HTML的基础。在XML中,声明内容为EMPTY的元素必须具有end-element标记,或者使用XML样式的空元素语法<x/>,它表示一个start元素标记的序列,紧接着是end-元素标记(WebSGML也支持它,但HTML中没有任何意义,即使您经常看到<p ... />等标记,试图将标记解析为HTML和XML / XHTML)。 XML的首要目标是允许无模式解析标记,例如。消除了通过标记声明(例如上面的标记声明)告诉解析器空元素,标记省略,属性引用和其他简短形式规则的需要。

但是XHTML作为广泛支持的浏览器标准(无论出于何种原因)失败,并且在2005/2006年左右,谷歌领导的WHATWG浏览器供应商小组开始研究HTML 5,定义他们自己的HTML解析规则,规范性地不基于SGML,更不用说基于XML。尽管HTML 5规范没有规范地引用SGML ISO 8879标准,但HTML 5当然仍然基于SGML,现代HTML及其所有特殊规则可以作为SGML干净地解析(参见DTD for HTML 5.1HTML 5 DTD reference;免责声明:这是我的项目以及我在2017年布拉格会议上发表的演讲全文。

W3C HTML 5.2 recommendation version(W3C每年由WHATWG materials发布)中,以下元素为空元素:baselinkmeta,{{ 1}},hrbrwbrsourceimgembedparam,{{1} },trackarea。这本质上是一组固定的元素,它们永远不会改变(除了删除,例如在W3C HTML 5.2中,col元素,它曾经是一个声明内容为input的元素。 HTML 5.1版本已删除。)