HTML completion
Задача: вычислить HTML-теги, которые могут быть вложены в данный.
Решение.
1. Описываем все теги в виде набора Java-классов, по одному классу на тег.
2. Учим эти Java-классы генерировать куски DTD, описыающие соответствующие теги.
Пусть теперь известна иерархия родительских тегов в документе, и нужно выяснить, какие дети в них могут встречаться.
3. Для всех возможных HTML-тегов повторять шаги 4-6:
4. Сгенерировать куски DTD для всех родительских тегов и кусок, описывающий вложенность текущего тега в родительские. (Какая именно строчка для этого генерится, я не разбирался. Судя по всему, дублирующееся описание родительского тега.)
5. Скормить полученный набор кусков (в виде массива строк) кастомному DTD-валидатору, специально предназначенному для данной задачи.
6. Если валидатор не выдал ошибку, то добавить текущий тег в список возможных детей.
Да здравствует Eclipse Web Tools Project! Индусы — вот implementation detail компании IBM.