wiki:ru/DOM

Version 2 (modified by vadim.godunko, 10 years ago) ( diff )

--

Пример API без использования ссылочных типов:

   type DOM_Node is tagged private;

   type DOM_Document is new DOM_Node with private;
   type DMO_Element is new DOM_Node with private;

   function Is_Document (Self : DOM_Node) return Boolean;
   function Is_Element (Self : DOM_Node) return Boolean;

   function To_Document (Self : DOM_Node) return DOM_Document;
   function To_Element (Self : DOM_Node) return DOM_Element;

Т.е. все узлы приватного тэгового типа. Наследование повторяет настелование в спецификации. Для каждого типа есть запрос а является ли текущий элемент элементом этого типа и соответствующая подпрограмма преобразования.

Адапрация DOM для Ada

Можно сделать DOM API более "похожим" на Ada, в частности класс CharacterData имеет несколько подпрограмм работы со строками, в которых доступ осуществляется через смещение:длину, а не позиционно, как в Ada. Поскольку мы не претендуем на иеальность соответствия, можно переделать эти подпрограмм на использование индекса первого/индекса последнего символа и нумеровать символы с 1 (в любом случае мы уже отошли от рекомендации, правда в дозволенных пределах, когда начали представлять данные в виде Unicode строк, а не 16-битных кодов).

Note: See TracWiki for help on using the wiki.