CDATA
![Niente fonti!](http://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Question_book-4.svg/45px-Question_book-4.svg.png)
CDATA (Character data) viene usato in vari ambiti nei linguaggi di markup come SGML o XML. Il termine indica una certa porzione di documento contenente caratteri generici oppure caratteri rappresentanti dati o una struttura marcata da tag.
Sezioni CDATA in XML
In un documento XML, una sezione CDATA viene trattata esclusivamente come testo semplice, il parser non interpreta quindi il contenuto come marcatura. Non esiste una differenza semantica tra il testo racchiuso in una sezione CDATA e quello convertito in entità (per esempio, "&" viene rappresentato con & o "<" con <).
Sintassi ed interpretazione
Una sezione CDATA inizia con:
<![CDATA[
e termina con la prima occorrenza di:
]]>
Tutti i caratteri racchiusi tra queste due sequenze sono interpretati come testo semplice, non markup o entità. Per esempio, in una linea tipo
<mittente>Mario Rossi</mittente>
l'apertura e la chiusura di mittente viene interpretata come marcatura. La sezione CDATA si utilizza come nell'esempio:
<mittente><![CDATA[Mario Rossi / , < >]]></mittente>
In questo caso il contenuto della marcatura mittente viene interpretato come Mario Rossi / , < >
.
Tuttavia, se scritto così:
<![CDATA[<mittente>Mario Rossi</mittente>]]>
tutta la stringa verrà trattata come testo e il tag mittente non considerato come marcatura. Il dato risultante dal parsing dell'XML è la stringa <mittente>Mario Rossi</mittente>
.
Uso delle sezioni CDATA
Le prime volte che un programmatore scrive un documento XML abusa delle sezioni CDATA, credendo che serva semplicemente a "proteggere" dati.
Le sezioni CDATA sono molto utili per includere codice XML come testo semplice dentro un documento XML. Per esempio, se qualcuno scrive un libro in XML (formattandolo con XSL) per parlare di XML stesso, per fornire degli esempi di codice, deve racchiuderli necessariamente dentro delle sezioni CDATA. Tuttavia, una sezione CDATA non può contenere la stringa "]]>" - questo problema può essere tuttavia aggirato separando le parentesi dal simbolo maggiore, come in questo esempio:
<![CDATA[]]]]><![CDATA[>]]>
CDATA nelle DTD
CDATA come tipo
Nei file Document Type Definition (DTD), ad un attributo può essere assegnato il tipo CDATA: il valore assegnato sarà trattato come testo e sarà quindi possibile inserire, senza errori di parsing, caratteri ed entity. Per esempio, se una DTD XML contiene
<!ATTLIST stringa spiegazione CDATA #IMPLIED>
vuol dire che gli elementi chiamati stringa potrebbero avere un attributo chiamato spiegazione di tipo CDATA. Un esempio valido può essere questo:
<stringa spiegazione="1 & 2 sono < di 3">
e un parser XML interpreterebbe il valore dell'attributo spiegazione come "1 & 2 sono < di 3".
Collegamenti esterni
W3C: Sintassi CDATA