From Novosibirsk, Russia? Our tiny company is looking for current or future rock-star developers.

July 26, 2007

HTML completion

Задача: вычислить HTML-теги, которые могут быть вложены в данный.

Решение.

1. Описываем все теги в виде набора Java-классов, по одному классу на тег.

2. Учим эти Java-классы генерировать куски DTD, описыающие соответствующие теги.

Пусть теперь известна иерархия родительских тегов в документе, и нужно выяснить, какие дети в них могут встречаться.

3. Для всех возможных HTML-тегов повторять шаги 4-6:

4. Сгенерировать куски DTD для всех родительских тегов и кусок, описывающий вложенность текущего тега в родительские. (Какая именно строчка для этого генерится, я не разбирался. Судя по всему, дублирующееся описание родительского тега.)

5. Скормить полученный набор кусков (в виде массива строк) кастомному DTD-валидатору, специально предназначенному для данной задачи.

6. Если валидатор не выдал ошибку, то добавить текущий тег в список возможных детей.

Да здравствует Eclipse Web Tools Project! Индусы — вот implementation detail компании IBM.