本規范中 XML 的形式化文法用一種簡單的擴展巴科斯范式(Extended Backus-Naur Form,EBNF)給出。文法中的每一條規則定義了一個符號,形式如下:
symbol ::= expression
如果符號是正則語言的起始符號,則它以大寫字母開頭,
否則以小寫字母開頭。字符串常量(literal strings)用引號括起。
在規則右邊的表達式中,以下表達式用於匹配一個或多個字符的字符串:
#xN
N
是一個十六進制的整數,當 ISO/IEC 10646 中某個字符的規范(UCS-4)代碼值作為無符號二進制數與 N
相等時,此表達式匹配這個字符。#xN
中的前導 0 沒有意義,在相應的代碼值中的前導 0 的個數則由所用字符編碼方案決定,對 XML 沒有意義。
[a-zA-Z]
, [#xN-#xN]
與其值在指定范圍內的任何 Char 相匹配(含界,inclusive)。
[abc]
, [#xN#xN#xN]
與其值為所枚舉的值之一的 Char 相匹配。在一對方括號內枚舉和范圍可以混用。
[^a-z]
, [^#xN-#xN]
與其值在指定范圍之外的任何 Char 相匹配。
[^abc]
, [^#xN#xN#xN]
與任何不在給定字符集內的 Char 相匹配。在一對方括號內被禁值的枚舉和范圍可以混用。
"string"
與匹配雙引號中所給字符串的常量字符串相匹配。
'string'
與匹配單引號中所給字符串的常量字符串相匹配。
這些符號可以按下列方式組合,以匹配更復雜的模式,其中A
和B
表示簡單表達式:
expression
) expression
被當成一個單元,可以向本表描述的那樣進行組合。 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: ... ]