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

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中完成,如果浏览器(和爬虫)应该如何.

解决方法

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

实际上,每个主流浏览器都实现了一个HTML特定的标签,而不是一个真正的SGML解析器,所以你不能这样做.这就是为什么HTML 4有一个list of SGML features to avoid,为什么HTML 5不是一个SGML应用程序.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 &lt;div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些