Comprensione di XML CharData EBNF

Nov 13 2020

La seguente regola EBNF espressa come

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

è davvero difficile da capire per me. Qualcuno può fornire alcuni esempi di stringhe valide e non valide. Sarebbe molto utile anche una breve spiegazione di ciò che viene espresso nella regola. Anche se forse chiedi un po 'troppo. Sarebbe anche molto bello se hai un frammento interessante di codice c ++ in giro che ti aiuterà a catturare questo evento.

Risposte

kjhughes Nov 13 2020 at 08:57

La produzione EBNF per CharData,

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

significa che i dati carattere XML possono essere costituiti da qualsiasi carattere tranne

  • <, che inizia il markup (tag, commenti, dichiarazioni XML, sezioni CDATA e PI)
  • &, che inizia riferimenti a entità,
  • la stringa di caratteri ]]>,, che termina una sezione CDATA.

In fuga:

  • Fuga <come &lt;nei dati dei personaggi.
  • Fuga &come &amp;nei dati dei personaggi.
  • ]]>non può apparire nei dati dei personaggi; non esiste una forma sfuggita.

Guarda anche:

  • Meno nella grammatica delle specifiche w3c