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

CAF*_*FxX 15 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>
Run Code Online (Sandbox Code Playgroud)

并且所有实体都将存储在文件顶部的文件中(每种语言一个,在上面的示例中为en-us.ent),例如

<!ENTITY menu.home "Home">
<!ENTITY menu.products "Products">
<!ENTITY menu.contactus "Contact us">
...
Run Code Online (Sandbox Code Playgroud)

最终,这甚至可以扩展到HTML片段(不确定是否真的允许),这可能对所有页面都有用(例如标题,菜单等;在上面的例子中,整个<ul>可能是这样的片段)

现在,我的理解是这在XHTML中理论上是可行的,但我想知道是否也可以在HTML中完成,以及浏览器(和爬虫)应该如何处理.

Que*_*tin 8

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

在实践中,每个主流浏览器都实现了一个HTML特定标签汤傻瓜而不是真正的SGML解析器,所以你不能这样做.这就是HTML 4具有要避免的SGML功能列表以及为什么HTML 5不是SGML应用程序的原因.