CDATA (/ˈsi.deɪ.tə/) je zkratka pro "character data " . Používá se pro různé, ale související účely ve značkovacích jazycích SGML a XML . CDATA označuje, že určitá část dokumentu jsou znaková data, na rozdíl od neznakových nebo znakových dat, která jsou speciálně strukturována.
V dokumentech XML je fragment umístěný uvnitř CDATA částí obsahu prvku, který je analyzátoru označen jako obsahující pouze znaková data, nikoli označení. CDATA je pouze alternativní syntaxe pro zobrazení znakových dat, neexistuje žádný sémantický rozdíl mezi znakovými daty deklarovanými jako CDATA a znakovými daty deklarovanými v normální syntaxi, kde „ <“ a „ >“ by byly reprezentovány jako „ <“ a „ >“ , resp.
Sekce CDATA začíná následující sekvencí znaků :
<![CDATA[
a končí prvním výskytem sekvence:
]]>
Všechny znaky mezi těmito dvěma sekvencemi jsou interpretovány jako znaky, nikoli značky nebo odkazy na objekt. Například v tomto řádku:
<sender>John Smith</sender>
otevírací a zavírací tag "odesílatel" bude interpretován jako označení. Pokud to však napíšete takto:
<![CDATA[<sender>John Smith</sender>]]>
pak bude tento kód interpretován stejným způsobem, jako kdyby byl napsán:
<sender>John Smith</sender>
Tímto způsobem se se značkami odesílatele bude zacházet stejně jako s „John Smith“, tj. s textem.
Podobně, pokud se číselná sekvence objeví v obsahu prvku ð, bude interpretována jako prostý znak Unicode 00F0. Pokud se však tato sekvence objeví v sekci CDATA, bude rozdělena do 6 znaků: ampersand , znak octothorpe , číslice 2, číslice 4, číslice 0 a středník .
Nováčci v XML často špatně chápou účel sekce CDATA jako „ochranu“ dat před zpracováním v této sekci. Některá rozhraní API pro manipulaci s dokumenty XML poskytují nezávislý přístup k sekci CDATA, ale tyto schopnosti existují nad rámec běžných požadavků systému zpracování XML a nemění význam dat. Znaková data jsou znaková data, ať už jsou zapsána v sekci CDATA nebo v prostém značení.
Sekce CDATA je užitečná, když chcete zapsat kód XML jako textová data do dokumentu XML. Pokud například potřebujete napsat knihu o XML do XSL s příklady použití aplikací XML, příklady, se kterými se setkáte, budou uzavřeny v CDATA. CDATA však nemůže obsahovat řetězec "]]>", a proto není možné vytvářet vnořené sekce CDATA. Pokud text obsahuje "]]>“, můžete jej zobrazit například pomocí několika oddílů CDATA, přičemž jeden z nich končí před znakem ">". Příklad:
<![CDATA[]]]]><![CDATA[>]]>
Chcete-li tedy kódovat ]]>v sekci CDATA, nahraďte všechny výskyty této znakové sady následujícím:
]]]]><![CDATA[>
V souborech DTD , v SGML i XML, lze atributu přiřadit typ CDATA - libovolná znaková data. Znakové ukazatele a odkazy na entity jsou povoleny uvnitř atributu typu CDATA a budou zpracovány při čtení dokumentu.
Například pokud XML DTD obsahuje
<!ATTLIST pro CDATA #IMPLIED>
to znamená, že prvky s názvem foo mají volitelný atribut " a " typu CDATA. V dokumentu XML, který odpovídá tomuto DTD, se může objevit následující prvek:
<foo a="1 a 2 jsou < 3 ">
a analyzátor XML interpretuje atribut " a " jako znaková data " 1 & 2 jsou < 3 ".
SGML a XML DTD mohou také obsahovat deklarace entity , ve kterých je značka CDATA použita k označení, že entita je znaková data. Znaková data se mohou objevit v samotném popisu nebo mohou být dostupná jako externí zdroj prostřednictvím odkazu URI . Tak či onak jsou v této entitě povoleny ukazatele na symbol a odkazy na entitu, které budou zpracovány při čtení dokumentu.
SGML DTD může deklarovat obsah prvku typu CDATA. V rámci prvku typu CDATA není analyzováno žádné označení. Analogii se sekcí CDATA můžete nakreslit v XML , ale v tomto případě se nejedná o žádné speciální označení, typ CDATA působí okamžitě na celý obsah prvku.