XML - статьи



              

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


Например, из этой теоремы следует, что выражение a|a+

a|(a*,a), так как a+
(a*,a)

Определение 4 (Структурные схемы XML документов) [12] Структурная схема XML документов есть совокупность (T,E,A,p,a,r), где:

  • T - множество, состоящее из всевозможных доменов.

  • Е - множество типов элементов; тип элемента состоит из имени и условного обозначения, являющегося уникальным идентификатором типа

    A - множество типов атрибутов. Каждый тип включает в себя:

  • имя атрибута,

  • домен принимаемых значений

  • идентификатор обязательности (должен ли атрибут быть заполнен)

  • уникальный идентификатор типа атрибута

p есть функция из множества E в reg({E,T}) . p:E

reg({id(E),T}), где id(E)- множество уникальных идентификаторов типа элемента

a есть функция из множества E в множество всех подмножеств множества A - pows(A). a: E

pows(A), причем для любого типа элементов e типы атрибутов из множества a(e) должны обладать уникальным именем.

r

E и называется типом корневого элемента. Для Множества E должно быть соблюдено следующее условие:
e0
E, e ? r
(e0,e1,..,en):
i < n ei
E и
последовательность s=[a0,..,aj-1,ei,aj,..an] s
{ id(E),T} (p(ei+1)), en=r. Это условие означает "достижимость до любого элемента от корня"

Определение, данное выше, является достаточно универсальным способом спецификации структурных ограничений схем XML. Достаточно легко показать, что структурные ограничения, заданные выражениями на таких языках спецификации схем, как XML Schema, DTD, Relax NG отображаются в структурные схемы. В качестве примера, мы приведем пример отображения схемы, выраженной на языке DTD в структурную схему:

Пример 3

Данной схеме DTD соответствует структурная схема (T,E,A,p,a,r), где:

T

{#PCDATA}

E

{{Product, product}, {Name, name}, {Developer, developer},
{Summary, summary}

,{Description, description },{Para, para },{List, list}, {Item, item}, {Link, link}} (здесь и далее тип элемента
представляется как пара - {имя, Идентификатор})

A

{(URL, CDATA, Required,url)}

p:

p(product)= (name, developer?, summary?, description?)




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