**CDATA** estas ŝlosil-vorto en la sintakso de XML-lingvoj. Ĝi estas mallongigo de la angla *character data* (signaj datenoj) kaj indikas, ke bloko de signoj ("sekcio") estas nuraj datenoj sen iu XML-sintaksa signifo.

Uzo
---

CDATA-sekcio en XML-dokumento komenciĝas per la naŭ signoj <![CDATA[ kaj finiĝas per la tri signoj ]]>. Ĉi tiuj signoj ne apartenas al la datenoj, nur la signoj inter ili. Ekzemple en la sekcio <![CDATA[eĥoŝanĝo]]> la vorto *eĥoŝanĝo* konsistigas la datenojn.

Ĉar la signotrio ]]> finas CDATA-sekcion, ĝi evidente ne povas esti parto de la datenoj.

### Efiko

En CDATA-sekcio la specialaj funkcioj de la signoj **<** kaj **&** de XML estas nuligitaj. Kiam ĉi tiuj signoj estas parto de la datenoj, ne necesas kodi ilin en la formo *&lt;* kaj *&amp;*, kiel kutime en XML. Eĉ male, se oni tiel kodus ilin, la tuta kodo aperus en la datenoj.

CDATA do estas maniero komforte uzi la du specialajn signojn en XML-datenoj. Tio estas aparte bonvena, kiam XML-teksto aperu kiel XML-datenoj, ekzemple kiam *<html>* estu ne etikedo, sed vico el ses signoj, aŭ kiam *&#265;* estu ne la litero *ĉ*, sed vico el ses signoj.

La efiko de CDATA-sekcio estas identa al la menciita kodado de **<** kaj **&**. Jenaj du formoj de dateno-kodado do estas funkcie identaj:

|  |  |
| --- | --- |
| Kodata teksto (datenoj): | La signoj < kaj & havas specialan signifon en XML-dokumentoj. |
| Kodado de < kaj &: | La signoj &lt; kaj &amp; havas specialan signifon en XML-dokumentoj. |
| Uzo de CDATA-sekcio: | <![CDATA[La signoj < kaj & havas specialan signifon en XML-dokumentoj.]]> |

### Kialoj por uzado

Kiel montras la ĉi-supra ekzemplo, la efiko de CDATA-sekcio estas atingebla ankaŭ per aliaj rimedoj. Kiam en CDATA-sekcio multfoje okazas la du specialaj signoj < kaj &, ĝi ŝparas iom da amplekso, sed kutime la ŝparo ne estas granda. La precipa motivo por uzi CDATA-sekcion estas, ke homoj pli facile povas legi la datenojn.

Ĉar CDATA-sekcio komenciĝas per la signo <, kiu jam estas speciala en XML, ĝi ne enkondukas pliajn restriktojn en XML.

Problemoj
---------

### Rikureco

CDATA-sekcioj ne povas aperi rikure; tia sekcio ne povas enhavi alian. Pli ĝenerale, la sekci-fina simbolo ]]> neniel povas aperi ene de CDATA-sekcio; ĝia unua apero finas la sekcion.

Por noti datenojn, kiuj enhavas ]]>, oni kutime disigas la datenan blokon en plurajn CDATA-sekciojn tiel, ke la du ortaj krampoj estas en unu sekcio kaj la >-signo en la sekva.

### La signaro

Por noti en XML-dokumento signon, kiu ne estas en la uzata signaro, eblas meti la unikodan numeron *nnnn* de la signo en la formo &#*nnnn*; (kun *nnnn* en dekuma formo, aŭ kun &#x en deksesuma formo). En CDATA-sekcio tio ne eblas, ĉar & tie ne estas speciala. Tio signifas ke en CDATA-sekcio povas okazi nur signojn el la signaro uzata de la XML-dokumento. Se, ekzemple, tiu signaro estas ISO 8859-5, ĉar la dokumento uzas precipe cirilajn signojn, esperantaj ĉapelitaj literoj ne povas esti en CDATA-sekcioj.

Uzado de unikoda kodoprezento (UTF-8, UTF-16) evitigas tiajn problemojn.

CDATA kiel atribut-tipo
-----------------------

La uzo de CDATA-sekcioj estas distingenda de alia signifo, kiun CDATA havas ne en XML-dokumentoj, sed en DTD-dokumentoj, kiuj priskribas la strukturon de certaj XML-lingvoj. Tie CDATA signifas, ke iu atributo de iu etikedo estas datenoj sen difinita strukturo. Por noti ke la etikedo *<mesagho>* havas atributon *temo* sen difinita strukturo, oni skribas:

```
<!ATTLIST mesagho temo CDATA #IMPLIED>
```

La etikedo tiam estas uzebla en jena formo:

```
<mesagho temo="mesaĝo pri ĉio kaj nenio">Saluton, …<mesagho>
```

Vidu ankaŭ
----------

* XML
* Dokumento-Speco-Difino (DTD)