html 5中的空元素是什么?
从以下选项中我如何找到空元素?
1. <br/>
2. <p> </p>
3. </img>
4. </p>
提前致谢
答案 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/>
也显示为空。
#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;
答案 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.1和HTML 5 DTD reference;免责声明:这是我的项目以及我在2017年布拉格会议上发表的演讲全文。
在W3C HTML 5.2 recommendation version(W3C每年由WHATWG materials发布)中,以下元素为空元素:base
,link
,meta
,{{ 1}},hr
,br
,wbr
,source
,img
,embed
,param
,{{1} },track
和area
。这本质上是一组固定的元素,它们永远不会改变(除了删除,例如在W3C HTML 5.2中,col
元素,它曾经是一个声明内容为input
的元素。 HTML 5.1版本已删除。)