ПРИЛОЖЕНИЕ  3

Интерпретация XML-Validate

Данный параграф тесно связан с параграфом "Интерпретация XSLT".

Пусть e.XML - документ XML, e.DTD - его описание, DI - функция-предикат от этих двух переменных. Будем суперкомпилировать <DI (e.DTD) (e.XML) > в варианте фиксированного описания документа e.DTD.

Основное ограничение предлагаемых программ - не обрабатываются Attribute в тэгах.

Примеры описаний документов можно посмотреть в di1.dtd , di2.dtd , di3.dtd , di9.dtd . В DTD для описания структуры дерева данных используются регулярные выражения для каждой вершины дерева. Регулярным выражениям посвящен соответствующий параграф данного пособия. Напомним, что там мы преобразовывали регулярные выражения в конечные автоматы, аналогичные преобразования делаем и здесь. Результат преобразования для первого примера можно посмотреть в di5.txt .

Для пусков суперкомпилятора в этих примерах служит bat-файл di.bat ;bat-файл digo.bat запускает полученную программу на счет. Также как и в параграфе "Интерпретация XSLT" задание на суперкомпиляцию порождается программой diparm.ref, одно из заданий можно посмотреть в di.mst.

Программа di.ref подвергается суперкомпиляции. Для обработки e.DTD используется программа dtd-ref.ref , для преобразования регулярных выражений в конечные автоматы применяется программа di5.ref . Документ XML обрабатывается парсером xml-ref.ref.

Далее приведем четыре примера. В каждом из них файл diN.dtd содержит описание DTD, r_diN.ref - текст результирующей программы после работы суперкомпилятора. Один из возможных примеров документа XML для результирующей программы приведен в diN.xml.

Пример 1.( di1.dtd , di1.xml , r_di1.ref ). Упрощенный вариант арифметических выражений, взятый из http://www.w3.org/Math/.

Пример 2. ( di2.dtd , di2.xml , r_di2.ref ). Пример взят из документации http://www.w3.org/TR/xslt .

Пример 3. ( di3.dtd , di3.xml , r_di3.ref ). Совсем простой пример, в какой-то мере описывающий произвольную скобочную структуру.

Пример 4. ( di9.dtd , di9.xml , r_di9.ref ). Описание XHTML, взятое из http://www.xml.com/pub/resourceguide/index.html. Напомним, что элементы ATTLIST в DTD здесь не обрабатываются. В качестве HTML-файла взят пример из "XML for the absolute beginner" http://www.javaworld.com/javaworld/jw-04-1999/jw-04-xml.html .

Список всех ссылок, используемых в данном параграфе, приведен ниже.

di.bat , digo.bat - запуски суперкомпилятора и результирующей программы.

diparm.ref - программа порождения MST-схемы.

di.mst - пример задания на суперкомпиляцию.

di.ref - интерпретатор DTD-Validate.

di5.ref , dtd-ref.ref , xml-ref.ref - вспомогательные рефал программы.

di5.txt - пример конечных автоматов.

di1.dtd , di2.dtd , di3.dtd , di9.dtd - примеры описаний DTD.

di1.xml , di2.xml , di3.xml , di9.xml - примеры XML-документов.

r_di1.ref , r_di2.ref , r_di3.ref , r_di9.ref - программы, построенные суперкомпилятором.