译者:裘强 (
[email protected])
本规范中 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: ... ]
有效性约束;用名字标识一个对与某个产生式相关联的有效的文件的约束。