Comprendre XML CharData EBNF

Nov 13 2020

La règle EBNF suivante exprimée en

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

est vraiment difficile pour moi de comprendre. Quelqu'un peut-il donner quelques exemples de chaînes valides et non valides. Une brève explication de ce qui est exprimé dans la règle serait également très utile. Bien que peut-être demander un peu beaucoup. Ce serait également très bien si vous aviez un extrait de code C ++ intéressant qui vous aidera à détecter cette occurrence.

Réponses

kjhughes Nov 13 2020 at 08:57

La production EBNF pour CharData,

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

signifie que les données de caractères XML peuvent être composées de n'importe quel caractère sauf

  • <, qui commence le balisage (balises, commentaires, déclarations XML, sections CDATA et PI)
  • &, qui commence les références d'entité,
  • la chaîne de caractères, ]]>qui termine une section CDATA.

S'échapper:

  • S'échapper <comme &lt;dans les données de caractères.
  • S'échapper &comme &amp;dans les données de caractères.
  • ]]>ne peut pas apparaître dans les données de caractères; il n'y a pas de forme échappée.

Voir également:

  • Moins dans la grammaire des spécifications W3C