XML CharDataEBNFを理解する

Nov 13 2020

次のEBNFルールは次のように表されます。

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

私には理解するのが本当に難しいです。誰かが有効な文字列と無効な文字列の例をいくつか挙げることができますか?ルールで何が表現されているかについての簡単な説明も非常に役立ちます。たぶん少し質問しますが。また、この発生をキャッチするのに役立つc ++コードの興味深いスニペットが周りにあると非常に便利です。

回答

kjhughes Nov 13 2020 at 08:57

のEBNF生成CharData、

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

XML文字データは、を除く任意の文字で構成できることを意味します

  • <、マークアップを開始します(タグ、コメント、XML宣言、CDATAセクション、およびPI)
  • &、エンティティ参照を開始します、
  • ]]>CDATAセクションを終了する文字列。

脱出:

  • 文字データの<よう&lt;にエスケープします。
  • 文字データの&よう&amp;にエスケープします。
  • ]]>文字データには表示できません。エスケープされたフォームはありません。

参照:

  • w3c仕様文法のマイナス