CDATA (/ˈsi.deɪ.tə/) on lyhenne sanoista " merkkitiedot " . Käytetään erilaisiin mutta toisiinsa liittyviin tarkoituksiin SGML- ja XML -kuvauskielissä . CDATA ilmaisee, että asiakirjan tietty osa on merkkidataa, toisin kuin ei-merkki- tai merkkitieto, joka on erityisesti jäsennelty.
XML-dokumenteissa CDATA:n sisään sijoitettu fragmentti on osa elementin sisällöstä, joka on merkitty jäsentimelle sisältämään vain merkkitietoja, ei merkintöjä. CDATA on vain vaihtoehtoinen syntaksi merkkidatan näyttämiseen, CDATA-muotoisena ilmoitetun merkkidatan ja normaalissa syntaksissa ilmoitettujen merkkitietojen välillä ei ole semanttista eroa, jossa " <" ja " >" esitettäisiin muodossa " <" ja " >" , vastaavasti.
CDATA-osio alkaa seuraavalla merkkijonolla :
<![CDATA[
ja päättyy sekvenssin ensimmäiseen esiintymiseen:
]]>
Kaikki näiden kahden sekvenssin väliset merkit tulkitaan merkeiksi, ei merkinnöiksi tai objektiviittauksiksi. Esimerkiksi tällä rivillä:
<sender>John Smith</sender>
aloittavat ja sulkevat "lähettäjä"-tunnisteet tulkitaan merkinnöiksi. Jos kuitenkin kirjoitat näin:
<![CDATA[<sender>John Smith</sender>]]>
silloin tämä koodi tulkitaan samalla tavalla kuin jos se olisi kirjoitettu:
<sender>John Smith</sender>
Tällä tavalla lähettäjän tunnisteita käsitellään samalla tavalla kuin "John Smith" eli tekstiä.
Samoin, jos numeerinen sarja esiintyy elementin sisällössä ð, se tulkitaan tavalliseksi Unicode-merkiksi 00F0. Mutta jos tämä sarja näkyy CDATA-osiossa, se jaetaan 6 merkkiin: et- merkki , octothorpe- merkki , numero 2, numero 4, numero 0 ja puolipiste .
XML:n uudet tulokkaat ymmärtävät usein väärin CDATA-osion tarkoituksen "suojata" tietoja käsittelyltä kyseisessä osiossa. Jotkut XML-asiakirjojen käsittelyyn tarkoitetut API:t tarjoavat itsenäisen pääsyn CDATA-osioon, mutta nämä ominaisuudet ovat olemassa XML-käsittelyjärjestelmän normaalien vaatimusten lisäksi ja niiden ulkopuolella, eivätkä ne muuta tietojen merkitystä. Merkkitiedot ovat merkkitietoja riippumatta siitä, onko se kirjoitettu CDATA-osaan tai pelkällä merkinnällä.
CDATA-osio on hyödyllinen, kun haluat kirjoittaa XML-koodia tekstitietona XML-dokumenttiin. Jos sinun on esimerkiksi kirjoitettava kirja XML:stä XSL -muotoon, jossa on esimerkkejä XML-sovellusten käytöstä, kohtaamasi esimerkit sisällytetään CDATA:han. CDATA ei kuitenkaan voi sisältää merkkijonoa "]]>", joten sisäkkäisten CDATA-osien luominen ei ole mahdollista. Jos teksti sisältää "]]>", voit näyttää sen käyttämällä esimerkiksi useita CDATA-osioita, joista yksi päättyy ennen ">"-merkkiä. Esimerkki:
<![CDATA[]]]]><![CDATA[>]]>
Siksi, jos haluat koodata ]]>CDATA-osaan, korvaa kaikki tämän merkistön esiintymät seuraavilla:
]]]]><![CDATA[>
DTD - tiedostoissa sekä SGML- että XML-muodossa attribuutille voidaan määrittää tyyppi CDATA - mielivaltainen merkkidata. Merkkiosoittimet ja entiteettiviittaukset ovat sallittuja CDATA-tyypin attribuutin sisällä, ja ne käsitellään, kun asiakirja luetaan.
Esimerkiksi jos XML DTD sisältää
<!ATTLIST foo a CDATA #IMPLIED>
tämä tarkoittaa, että elementeillä nimeltä foo on valinnainen " a " -attribuutti, jonka tyyppi on CDATA. Tämän DTD:n mukaisessa XML-asiakirjassa saattaa näkyä seuraava elementti:
<foo a="1 & 2 ovat < 3 ">
ja XML- jäsentäjä tulkitsee " a "-attribuutin, koska merkkidata " 1 ja 2 ovat < 3 ".
SGML- ja XML - DTD :t voivat sisältää myös entiteettimäärityksiä , joissa CDATA-merkkiä käytetään osoittamaan, että entiteetti on merkkidataa. Merkkitiedot voivat näkyä itse kuvauksessa tai ne voivat olla saatavilla ulkoisena resurssina URI -viittauksen kautta . Tavalla tai toisella osoittimet symboliin ja viittaukset entiteettiin ovat sallittuja tässä entiteetissä, jotka käsitellään dokumenttia luettaessa.
SGML DTD voi ilmoittaa CDATA-tyypin elementin sisällön. CDATA-tyypin elementissä ei jäsennetä merkintöjä. Voit vetää analogian XML :n CDATA-osion kanssa , mutta tässä tapauksessa ei ole erityistä merkintää, CDATA-tyyppi vaikuttaa välittömästi elementin koko sisältöön.