Конструкции языка служат для создания элементов шаблонов и документов.
В последующих описаниях используются следующие обозначения: в круглых скобках обозначены литералы. Разделитель обозначается <D>. Пустая последовательность символов обозначается *.
<элемент>::= открывающий тэг><значение элемента><закрывающий тэг>
<элемент>::= <одиночный тэг>
<открывающий тэг>::= (<)<имя элемента><D><список параметров>(>)
<закрывающий тэг>::= (</)<имя элемента> (>)
<одиночный тэг>::= (<)<имя элемента><D><список параметров> (/>)
<имя элемента>::=<имя>
<имя>::= <буква латинского алфавита> I (_)
<имя>::= (_)
<имя>::= <имя><буква латинского алфавита>
<имя>::= <имя><цифра>
<имя>::= <имя>(_)
<значение элемента>::= <значение простого элемента> I <содержимое составного элемента>
<значение простого элемента>:: = *
<значение простого элемента>:: = <последовательность символов>
<последовательность символов>:: = <терминальный символ>
<последовательность символов>:: = <нетерминальный символ>
<последовательность символов>:: = <D>
<последовательность символов>:: = <последовательность символов> <терминальный символ>
<последовательность символов>:: = <последовательность символов> <нетерминальный символ>
<последовательность символов>:: = <последовательность символов><D>
<содержимое составного элемента>::= <элемент>
<содержимое составного элемента>::=<содержимое составного элемента><элемент>