我想了解在HTML文档中使用自定义实体进行本地化是否可能(以及,如果支持得多)。
我想象的是做这样的事情:
<!DOCTYPE html "/locales/en-us.ent">
<html>
<head>
<title>&contactus.title;</title>
</head>
<body>
<p>&contactus.youcanreach;<br>123, Example Road<br>12345 Example City</p>
<ul id="menu">
<li>&menu.home;</li>
<li>&menu.products;</li>
<li>&menu.contactus;</li>
</ul>
</body>
</html>
并且所有实体都将存储在文件顶部的文件中(每种语言一个,上面的示例中为en-us.ent),例如
<!ENTITY menu.home "Home">
<!ENTITY menu.products "Products">
<!ENTITY menu.contactus "Contact us">
...
最终,这甚至可以扩展到HTML片段(不确定是否真的允许),这可能对所有页面都有用(例如标题,菜单等;在上面的示例中,整个<ul>
可能是这样一个片段)
现在,我的理解是,这在XHTML中理论上是可行的,但我想知道这是否也可以在HTML中完成,以及浏览器(和爬虫)应该如何处理。
答案 0 :(得分:8)
从理论上讲,这是可能的。 HTML 4.x(和以前的几个版本)是SGML应用程序,因此您可以使用新实体扩展DTD。
在实践中,每个主流浏览器都实现了一个HTML特定标签汤傻瓜而不是真正的SGML解析器,所以你不能这样做。这就是为什么HTML 4有list of SGML features to avoid以及为什么HTML 5不是SGML应用程序的原因。