为什么<;br>;一个HTML元素而不是一个HTML实体?
为什么呢?不是像为什么<;br>;一个HTML元素而不是一个HTML实体?,html,Html,为什么呢?不是像这样的东西吗&br是否更合适?标记和字符实体引用的存在有不同的原因-字符实体是某些字符的替代品(有时需要作为转义序列-例如,对于符号和&),标记用于结构 标记存在的原因是HTML压缩空白。需要有一种方法来指定硬换行符-一个必须有换行符的地方。这是标记的功能 没有一个字符具有这种含义,尽管U+2028行分隔符具有类似的含义,而且即使使用它也没有帮助,因为它被认为是空白,HTML会将其折叠 有关这方面的更多详细信息,请参见和的答案 不完全相关,另一个原因是&br字符实体引用不存在:
这样的东西吗&br代码>是否更合适?标记和字符实体引用的存在有不同的原因-字符实体是某些字符的替代品(有时需要作为转义序列-例如,对于符号和&
),标记用于结构
标记存在的原因是HTML压缩空白。需要有一种方法来指定硬换行符-一个必须有换行符的地方。这是
标记的功能
没有一个字符具有这种含义,尽管U+2028行分隔符
具有类似的含义,而且即使使用它也没有帮助,因为它被认为是空白,HTML会将其折叠
有关这方面的更多详细信息,请参见和的答案
不完全相关,另一个原因是&br代码>字符实体引用不存在:换行符的定义方式可以包含多个字符,请参见:
换行符被定义为回车符(&x000D;
)、换行符(&x000A;
)或回车符/换行符对
字符实体是单字符转义,因此无法在以下情况中再次表示:
字符实体引用是引用文档字符集字符的SGML构造
您将看到所有已定义的角色实体映射到单个角色。换行符/新行不能以这种方式清晰地映射,因此需要实体而不是字符实体引用
这就是为什么换行符不能由字符实体引用表示的原因
无论如何,不需要它,因为只需使用Enter键即可插入换行符。是。HTML实体更合适,因为break标记不能包含文本,其行为更像换行符
但事情不是这样的。太晚了。我无法告诉您,由于未关闭的中断标记,我不得不处理多少不兼容XML的HTML文档…实体是内容,标记是结构或布局(非常粗略地说)。似乎是谁把
作为一个标签,决定了断行更多地与结构和布局有关,而不是与内容有关。无法真正“看到”一个
我倾向于同意。哦,我正在弥补这一点,所以请随意不同意;) br
元素可以设置样式。如何设计HTML实体的样式?因为它们是元素,所以更加灵活。实体是其他字符或文本位的替代。在HTML中,它们用于表示难以键入的字符(例如“-”的
)或需要转义的字符(“&”)。假设的&br代码>实体代表什么
它不能是\r
或\n
或\r\n
,因为这些已经足够容易键入(只需按enter键)。您试图解决的问题是,HTML在大多数上下文中压缩空白,并将换行符视为空格。也就是说,\n
不是换行符,它只是像制表符和空格一样的空白
实体&br代码>必须由其他文本替换。你用什么字符来表示“强硬路线突破”的概念?标准换行符\n
正是正确的字符,但不幸的是,它不合适,因为它被抛出到通用的“空白”存储桶中。您必须重载一些其他控制字符来表示“硬线中断”,或者使用一些扩展的Unicode字符。当HTML被设计时,Unicode仅仅是一个新兴的、仍在发展中的标准,所以这不是一个选项
元素是向文档中添加“硬线中断”概念的简单而直接的方法,因为没有字符可以表示该概念。HTML实体引用是SGML实体还是XML实体(HTML从底层技术继承实体),取决于HTML版本。实体是将别处定义的内容块插入文档的一种方式
所有HTML实体都是单字符实体,因此基本上与字符引用相同(从技术上讲,它们与字符引用不同,但由于没有定义多字符实体,因此这种区别对HTML没有影响)
当HTML处理器看到时,例如&mdash代码>它根据DTD中的一节,将其替换为该实体引用的内容和相应的实体,该节说明:
<!ENTITY mdash CDATA "—" -- em dash, U+2014 ISOpub -->
因此,它将实体引用替换为实体—
,它又是一个字符引用,被字符-
(U+2014)替换。实际上,除非您使用的是不直接理解HTML的通用XML或SGML处理器,否则这实际上是一步完成的
现在,我们用什么来代替您的假设&br;用什么方法导致线路中断?我们不能使用换行符,甚至不太为人所知的U+2028行分隔符(在纯文本中,它的语义与HTML中的
的含义相同),因为它们是空白字符,在大多数HTML代码中并不重要,这是您应该感谢的,因为如果我们不能在源代码中设置可读性格式,那么编写HTML将更加困难
我们需要的不是一个实体,而是一种从语义上指示呈现内容在这一点上包含换行符的方法。我们也不需要指示任何其他内容(我们已经可以通过开始或结束块元素来指示换行,但这不是我们想要的)。onl
<!ENTITY br "<br>">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd" [
<!ENTITY br "<br>">
]>
<HTML>
<HEAD>
<TITLE>My first HTML document</TITLE>
</HEAD>
<BODY>
<P>Hello &br;world!
</BODY>
</HTML>