Pull to refresh

Знак рубля и XHTML 1.0 Strict. Что общего?

Reading time 3 min
Views 903
Речь пойдёт о Document Type Definition (или DTD, <!DOCTYPE ...> короче говоря).
На пути к совсем семантической вёрстке, нам понадобится DTD или же стандарт XML Schema. В данной статье я рассмотрю первое и покажу, как с помощью 2 строк и одного CSS-стиля сделать кроссбраузерный, W3-валидный документ с использованием собственного тэга — <rur>
Разобравшись с изложенным мною методом, любой может создавать валидные документы с использованием собственных тэгов, которые могут не только сделать макет документа более гибким, но и более семантически-правильным, логичным и понятным, как для роботов, так и для людей, которые будут заниматься дальнейшей его поддержкой.


Итак, нам требуется внедрить в XHTML свой тэг, который обозначал бы знак рубля. Для того, чтобы страница была одобрена валидатором, она должна быть не только well-formed (Прим.: синтаксически правильной в терминах «XMLSpec»), но и валидной, т.е. составленной в соответствии с дескриптором типа документа, известным, как DTD.
Я пользуюсь DTD XHTML 1.0 Strict, описание валидных документов для которого можно найти по знакомому URL http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
Изучив структуру документа, мы найдём следующие строки:
  1. <!--=================== Text Elements ====================================-->
  2.  
  3. <!ENTITY % special.pre
  4.   "br | span | bdo | map">
* This source code was highlighted with Source Code Highlighter.

Эти строки показывают, что в документе могут быть использованы тэги br, span, bdo, map. Наш тэг называется rur. Теперь осталось как-то внедрить его в уже созданный DTD. Стандарт DTD позволяет наращивать дескрипторы типов документов. Я не буду на это останавливаться, а покажу сразу код DOCTYPE-заголовка для валидного XHTML 1.0 — Strict документа:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
  2. [&#60;!ENTITY % special.pre "br | span | bdo | map | rur">
  3. <!ELEMENT rur (#PCDATA)>
  4. <!ATTLIST rur>]>
* This source code was highlighted with Source Code Highlighter.

Приведенный код означает, что мы добавляем для сущности special.pre тип тэга rur, который не имеет параметров и может содержать Parsed Character Data.
Для проверки работоспособности кода, вживим в любой валидный XHTML-макет указанный выше заголовок и следующий код:
  1. Знак рубля (<rur>руб.</rur>) появился в обращении 1 июля 2007 года.
  2.  
  3. <script type="text/javascript">
  4. //<![CDATA[
  5. i=0;
  6. while (true)
  7. {
  8.   var elem = document.getElementsByTagName ('rur')[i]; 
  9.   
  10.   if (!elem) {break;}
  11.   elem.innerHTML = "Р";
  12.   i++;
  13.  
  14. //]]>
  15. </script>
* This source code was highlighted with Source Code Highlighter.


JS-код, я думаю вполне понятен — он ищет тэги <rur> в теле документа и подставляет в них контент — букву «Р», которая является графической основой знака рубля. Если у клиента нет JS, то выводится остаётся просто «руб.»
Да! И совсем забыл CSS для нашего рубля!
  1. /*знак рубля*/
  2. rur
  3. {
  4.   text-decoration: line-through;
  5.   margin: 0.1em;
  6. }
* This source code was highlighted with Source Code Highlighter.

Кстати, он у вас может быть совсем другим!
Вот как-то так. Я думаю, Хабролюди с полна оценят эту скромную работку и поймут её ценность. Спасибо за внимание!
Для проверки, Вы можете открыть исходный код с моего сервера по адресу: http://www.ridev.ru/valid-rur.htm
Я намеряно запихнул CSS внутрь, чтобы был один файл.


Tags:
Hubs:
+24
Comments 47
Comments Comments 47

Articles