本規范中 XML 的形式化文法用一種簡單的擴展巴科斯范式(Extended Backus-Naur Form,EBNF)給出。文法中的每一條規則定義了一個符號,形式如下:
如果符號是正則語言的起始符號,則它以大寫字母開頭,
否則以小寫字母開頭。字符串常量(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: ... ]
- 有效性約束;用名字標識一個對與某個產生式相關聯的有效的文件的約束。
(http://www.fanqiang.com)
進入【