Использование пользовательских объектов в документах HTML
TL;DR
Я хотел бы понять, возможно ли (и в случае, насколько хорошо поддерживается) использовать пользовательские объекты в 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">
...
В конце концов, это может даже быть exapnded к фрагментам HTML (не уверен, что это действительно разрешено), которые могут быть полезны на всех страницах (например, заголовки, меню и т.д., в приведенном выше примере, весь <ul>
может быть такой фрагмент)
Теперь я понимаю, что это теоретически возможно в XHTML, но мне было интересно, можно ли это сделать также в HTML и, в случае, насколько хорошо будут работать браузеры (и сканеры).
Ответы
Ответ 1
В теории это возможно. HTML 4.x(и несколько предыдущих версий) - это SGML-приложения, поэтому вы можете расширить DTD новыми объектами.
На практике каждый основной браузер реализует специфичный для HTML тэг soup slurper вместо реального синтаксического анализатора SGML, поэтому вы не можете этого сделать. Вот почему HTML 4 имеет список возможностей SGML, чтобы избежать и почему HTML 5 не является SGML-приложением.