在HTML文档中使用自定义实体

时间:2011-09-06 14:33:57

标签: html xhtml localization html-entities

TL;博士

我想了解在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中完成,以及浏览器(和爬虫)应该如何处理。

1 个答案:

答案 0 :(得分:8)

从理论上讲,这是可能的。 HTML 4.x(和以前的几个版本)是SGML应用程序,因此您可以使用新实体扩展DTD。

在实践中,每个主流浏览器都实现了一个HTML特定标签汤傻瓜而不是真正的SGML解析器,所以你不能这样做。这就是为什么HTML 4有list of SGML features to avoid以及为什么HTML 5不是SGML应用程序的原因。