CDATA

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)

Kategorio:Marklingvoj