[英]Why are HTML character entities necessary?
为什么需要HTML字符实体? 他们有什么好处? 我没有看到这一点。
两件主要的事情。
“ 1 < 2
”允许您在页面中添加“ 1 < 2
”。
答案很长:
由于HTML使用“ <
”打开标记,因此如果您希望将其作为文本输入,则不能只输入“ <
”。 因此,您必须有一种方式说“我希望文本 <
在我的页面中”。 设计HTML(或实际上是SGML,HTML的前身)的人决定使用' &
something ;
',所以你也可以把不间断的空间放在一起:'
'(没有折叠或允许换行的空格)。 当然,现在你需要有一种方式说“ &
”,让你获得' &
” ...
它们不是,除了&
, <
, >
, "
可能
。 对于所有其他角色,只需使用UTF-8即可。
在SGML和XML中,它们不仅仅适用于角色。 它们是通用的包含机制,它们对特殊字符的使用只是众多案例中的一种。
<!ENTITY signature "<hr/><p>Regards, <i>&myname;</i></p>">
<!ENTITY myname "John Doe">
这种实体对网站没用,因为它们只能在XML模式下工作,如果不在浏览器配置中启用“验证”解析模式,则无法使用外部DTD文件。
实体可以递归扩展。 这允许使用XML进行拒绝服务攻击,称为“Billion Laughs Attack”。
Firefox在内部(在XUL等中)使用实体进行国际化和与品牌无关的消息(使Flock和IceWeasel的生活更轻松):
<!ENTITY hidemac.label "Hide &brandShortName;">
<!ENTITY hidewin.label "Hide - &brandShortName;">
在HTML中你只需要<
, &
和"
避免文本和标记之间的歧义。
所有其他实体基本上都被Unicode编码废弃,并且仅作为便利性保留(但是好的文本编辑器应该具有可以替换它们的宏/片段)。
在XHTML中,除了少数几个实体之外的所有实体都存在问题,因为它们不能与独立的XML解析器一起使用(例如
不起作用)。
要解析所有需要验证 XML解析器(选项通常称为“解析外部”)的XHTML实体,这种实现速度较慢且需要设置DTD目录。 如果您忽略或搞砸了DTD目录,您将参与W3C服务器的DDoS 。
字符实体用于表示为HTML for.ex.编写的字符。 <,>,/,&etc,如果你想在你的内容中表示这些字符你应该使用字符实体,这将有助于解析器区分内容和标记
您可以使用实体来帮助解析器区分何时应将字符表示为HTML,以及您真正想要向用户显示的内容,因为HTML将为其自身保留一组特殊字符。
在HTML中输入字面意思
我不是那个意思</ sarcasm>
会导致“</ sarcasm>”标签消失,
例如
我不是那个意思
因为HTML没有这样定义的标签。 在这种情况下,使用实体将允许文本正确显示。
例如
不完全是! &LT; /讽刺&GT;
给
不完全是! </讽刺>
如预期的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.