了解 XML CharData EBNF

Understanding XML CharData EBNF

以下EBNF规则表示为

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

我真的很难理解。有人可以举几个有效和无效字符串的例子吗?对规则中表达的内容进行简要解释也将非常有帮助。虽然也许要求有点多。如果您有一段有趣的 C++ 代码片段可以帮助捕捉到这种情况,那将是非常好的。

CharData

的 EBNF 生成

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

表示XML字符数据可以包含除

以外的任何字符
  • <,开始标记(标记、注释、XML 声明、CDATA 部分和 PI)
  • &,开始实体引用,
  • 结束 CDATA 部分的字符串 ]]>

转义:

  • 在字符数据中将 < 转义为 &lt;
  • 在字符数据中将 & 转义为 &amp;
  • ]]>不能出现在字符数据中;没有转义形式。

另请参阅: