Технология XSLT (Валиков) - страница 26

Первые два случая определения элемента довольно просты. Их использование может быть продемонстрировано на следующем примере:

>Декларация

>

>

>

>

>]>

определяет документ с корневым элементом >advert, в котором могут встречаться также элементы >product и >classified, причем элементы >advert и >product могут содержать любые данные и любые из объявленных элементов, а элемент >classified всегда должен быть пустым.

Приведем пример документа, построенного в соответствии с этой декларацией.

Листинг 1.3. Документ с декларацией типа

>

>

>

>

>

>]>

>

>  Покупайте наших слонов!

>

В третьем случае содержимое элемента определяется при помощи формальных правил, которые очень похожи на те, которые используются в расширенных формах Бэкуса-Наура. Подобно тому, как в EBNF формальные правила используются для того, чтобы стандартизировать последовательность символов, составляющую конструкции некоторого языка, в определениях элементов они используются для описания содержимого элемента — последовательности из символьных данных и дочерних элементов.

Количество, с которым элемент может появляться в этой последовательности, формально записывается с использованием символов-модификаторов ">*", ">?", ">+", которые имеют следующие значения:

□ >а? — означает, что элемент может быть пропущен в последовательности;

□  — означает, что элемент должен присутствовать в последовательности на этом месте ровно один раз;

□ >а* — задает последовательность из нуля или более элементов ;

□ >a+ — задает последовательность из одного или более элементов .

Кроме того, содержимое может моделироваться как перечисление и выбор элементов.

Элементы перечисляются через запятую в круглых скобках, например >(a, b, c) — это последовательность, состоящая из элементов >a, >b, >c. Такая запись означает, что первым должен идти элемент >a, затем сразу же за ним элемент >b и элемент >c.

Выбор элемента задается аналогично перечислению, только разделительным символом является не запятая, а знак '>|'. Например, (>a | b | c) задает выбор одного из трех элементов >a, >b или >c.

При записи выбора и перечисления элементы могут также указываться с использованием модификаторов количества.

Пример

>(a* | b? | с | d+)

определяет содержимое, как последовательность, состоящую из нуля или более элементов >aили одного элемента >b, который может быть пропущен,