XML - статьи



              

Структурные ограничения XML - часть 3


p(name)= p(Developer)=p(Summary)= #PCDATA

p(description)= (para | list)+

p(para)=p(Item) = (#PCDATA | link)*

p(list)= Item+

p(link)= ?

a:

a(link)={URL}

a(product)=a(name)=...=a(list)

{}

r=product

Таким образом, можно установить, что при отображении в структурную схему каждому имени элемента в DTD соответствует уникальный тип элемента. Множество T состоит из типа #PCDATA (Термин PCDATA обозначает произвольный набор символов, интерпретируемый синтаксическим анализатором как текстовый узел). Каждому атрибуту соответствует свой тип атрибута, значения которого устанавливаются согласно свойствам типа атрибута в DTD. Наконец, отображение p задается исходя из регулярных выражений, определяющих структуру элемента DTD. Однако, стоит отметить, что ограничения целостности, которые могут присутствовать в DTD (атрибуты типа ID или IDREF) никоим образом не отображаются на структурную схему. Ограничения целостности мы обсудим в последнем разделе работы.

Заметим, что в зависимости от регулярного выражения, соответствующего элементам их типы можно классифицировать следующим образом:

    - элементы пустого содержания : p(e)
    {? },

    - элементы, содержащие данные : p(e)

    reg(T)/{? },

    - элементы элементного содержания: p(e)

    reg(id(E))/ {? },

    - элементы смешанного содержания : p(e)

    reg({id(E),T})/{ reg(E)
    reg(T)}

В нашем примере, link -это элемент пустого содержания, name, developer, summary - элементы содержащие данные, product , description и list - элементного содержания, и наконец para и item - смешанного.

Стоит заметить, что структурные схемам вида (T,E,A,p,a,r) однозначно соответствуют регулярные грамматики деревьев [13], если положить следующее:

    - множество F и id(Е) являются нетерминальными символами грамматики, где F - множество типов текстовых узлов, id(E) - множество уникальных идентификаторов типов элементов

    - T и name(E) - терминалы грамматики, где name(E) - множество имен элементов

    - Отображение p(e) заменяется правилом продукции одного из следующих двух видов:
    x

    a r, где x
    id(E), a
    name(E), r
    reg({E,F}) или




    Содержание  Назад  Вперед