[an error occurred while processing this directive]
Формальная грамматика языка XML строится в данной спецификации с помощью простой нотации Extended Backus-Naur Form (EBNF). Каждое правило в грамматике определяет один символ (symbol) в следующем формате:
Каждый символ, являющийся оригинальным в языке нормативов, пишется с заглавной буквы. В остальных случаях, первая буква символа прописная. Строки текста помещаются в кавычки.
В правой части правила представлено выражение, использующее следующие конструкции, сопоставляемые строкам из одного или нескольких символов:
#xN
где N
- шестнадцатеричное целое число. Данное выражение соответствует символу в кодировке ISO/IEC 10646, каноническое значение кода (UCS-4) которого как беззнаковое целое число, имеет указанное значение. Количество ведущих нулей в формате #xN
значения не имеет. Количество ведущих нулей в соответствующем значении кода определяется используемой кодировкой символов и для XML значения не имеет.
[a-zA-Z]
, [#xN-#xN]
соответствует любому Char, чье значение попадает в указанный диапазон(ы) (включительно).
[abc]
, [#xN#xN#xN]
соответствует любому Char, чье значение имеется среди перечисленных символов. В пределах одного набора скобок перечисления и диапазоны могут сочетаться.
[^a-z]
, [^#xN-#xN]
соответствует любому Char, чье значение не входит в указанный диапазон.
[^abc]
, [^#xN#xN#xN]
соответствует любому Char, чьего значение нет среди указанных символов. В пределах одного набора скобок перечисления и диапазоны запрещенных значений могут сочетаться.
"string"
соответствует строке символов, совпадающей со строкой, представленной в двойных кавычках.
'string'
соответствует строке символов, совпадающей со строкой, представленной в одинарных кавычках.
Представленные символы могут комбинироваться в более сложные шаблоны следующим образом (где A
и B
представляют собой простые выражения):
выражение
)
данное выражение
обрабатывается как единое целое и может комбинироваться с другими выражениями в соответствии с дальнейшим перечнем.
A?
соответствует A
или ничему. Необязательная единица A
.
A B
соответствует A
, за которым следует B
. Данный оператор имеет более высокий приоритет, чем оператор альтернативы. Таким образом, A B | C D
эквивалентно (A B) | (C D)
.
A | B
соответствует A
или B
, но не обоим сразу.
A - B
любая строка, которая соответствует шаблону A
, но не соответствует B
.
A+
соответствует одному или нескольким экземплярам A
. Конкатенация имеет более высокий приоритет, чем оператор альтернативы. Таким образом, A+ | B+
эквивалентно (A+) | (B+)
.
A*
соответствует нулю, одному или нескольким экземплярам A
. Конкатенация имеет более высокий приоритет, чем оператор альтернативы. Таким образом, A* | B*
эквивалентно (A*) | (B*)
.
Остальные нотации, используемые в сценариях:
/* ... */
комментарий.
[ wfc: ... ]
ограничение корректности. Идентифицирует по имени ограничение для корректных документов, связанное с неком сценарием.
[ vc: ... ]
ограничение действительности. Идентифицирует по имени ограничение для действительных документов, связанное с неким сценарием.
Назад | Содержание | Вперед
[an error occurred while processing this directive]