CDATA

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 23. huhtikuuta 2020 tarkistetusta versiosta . tarkastukset vaativat 8 muokkausta .

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.

CDATA XML:ksi

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 " &lt;" ja " &gt;" , vastaavasti.

Syntaksi ja tulkinta

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:

&lt;sender&gt;John Smith&lt;/sender&gt;

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ä &#240;, 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 .

CDATA:n käyttö

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[>

CDATA DTD:ssä

CDATA-attribuuttien arvot

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 ".

CDATA-tyypin entiteetit

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.

CDATA-tyypin elementin sisältö

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.

Katso myös