Обычно DTD преобразуется в набор автоматов конечного состояния - существует стандартный алгоритм для преобразования грамматики BNF в детерминированный FSA, который можно найти в учебниках по компилятору, таких как Aho и Ullmann.Это создаст один FSA для модели содержимого каждого элемента.Текущее состояние анализа / проверки, таким образом, представлено стеком, содержащим один FSA (с его текущим состоянием) для каждого открытого элемента.Когда синтаксический анализатор обнаруживает начальный тег, он проверяет, представляет ли этот начальный тег действительный переход в самом верхнем FSA, и изменяет текущее состояние в этом FSA, выполняя этот переход;он также добавляет новый FSA в стек, соответствующий FSA для модели содержимого нового элемента.Когда он видит конечный тег, он проверяет, является ли текущее состояние самого верхнего FSA конечным состоянием, и извлекает этот FSA из стека.