当前位置:Linux教程 - Linux - XML1.0 中文文档(第二版)---6. 记法(Notation)

XML1.0 中文文档(第二版)---6. 记法(Notation)

译者:裘强 ([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: ... ]


有效性约束;用名字标识一个对与某个产生式相关联的有效的文件的约束。