从XML规范中解密EBNF

  • 本文关键字:解密 EBNF 范中 XML ebnf
  • 更新时间 :
  • 英文 :


看看下面的定义。这到底应该定义什么?根据EBNF规范,括号[]定义了一个可选项目,那么为什么需要*呢?这不是多余的吗(因为这意味着重复零次或更多次)?

第二件事是,你如何解释括号内的部分?-是排除指示符,所以它是否意味着排除括号内的任何项目,或者排除所有三个项目的序列(从^<&开始为零或更多,然后是]]>,然后是从^<&开始的零或更多)?

CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)

或者我完全错了,这不是EBNF?

提前感谢

XML规范没有严格使用ISO指定的EBNF。如果您查看XML规范的第6节,它定义了所使用的表示法。方括号以类似regex的方式使用,而不是表示语法的可选元素;并且用于排除的CCD_ 7整体上排除括号内的组。因此,您引用的行表示构建如下:

  • [^<&]-而非左尖括号(<)或与号(&)的任何字符
  • [^<&]*-零个或多个不是左尖括号或与号的字符
  • [^<&]* - ([^<&]* ']]>' [^<&]*)-零个或多个字符,这些字符不是左尖括号或符号,并且在整个序列中的任何位置都不包含特定的字符序列]]>

最新更新