我正在尝试阅读W3C对XML的建议,我发现自己对用于定义事物的语言感到有点困惑,使用::=
符号的语言。
大多数情况下,这些定义看起来像正则表达式:
STag ::= '<' Name (S Attribute)* S? '>'
但我不时会遇到奇怪的符号,如下所示:
Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'
Char - '-'
是什么意思?匹配Char
匹配排除'-'
的所有内容?
我在哪里可以找到该语言的正式定义?我试图通过&#34; :: =&#34;但谷歌只是忽略了它。 W3C推荐本身并没有任何关于此事的信息。
答案 0 :(得分:2)
这是BNF(Backus Naur Form)的众多变体之一 - 正如您所指出的那样与正则表达式有相似之处。
根据我的经验,“除”运算符(“ - ”)有点不寻常。 (Char - '-')
表示“任何与Char匹配但不匹配' - '”的东西 - 也就是说,除了连字符之外的任何字符。
规范的第6部分描述了XML规范使用的BNF的特殊风格:
答案 1 :(得分:0)
本规范中使用a给出了XML的形式语法 简单的扩展Backus-Naur形式(EBNF)表示法。
并解释:
'string'匹配匹配在其中的给定的文字字符串 单引号。