CDATA бөлімі SGML және XML тілдерінде мәндік деректерді көрсету үшін қолданылады. Бұл деректерді әдеттегідей емес, мәтін ретінде қарастырады. XML туралы толық ақпарат!
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
SGML және XML белгілеу тілдерінде бөлімдік белгіше.
Section delimiter in the markup languages SGML and XML
CDATA термині, «мәліметтік таңбалар» деген мағынаны білдіреді, SGML және XML белгілеу тілдерінде ерекше, бірақ байланысты мақсаттар үшін қолданылады. Бұл термин құжаттың белгілі бір бөлігінің арнайы емес немесе шектеулі құрылымы бар мәліметтер емес, жалпы мәліметтік деректер екенін көрсетеді.
The term CDATA, meaning character data, is used for distinct, but related, purposes in the markup languages SGML and XML. The term indicates that a certain portion of the document is general character data, rather than non character data or character data with a more specific, limited structure.
XML-дегі CDATA бөлімдері
XML құжатында немесе сыртқы нысанда CDATA бөлімі – элемент мазмұнының бір бөлігі, ол сөздерінше түсіндірілуі үшін, яғни мәтіндік дерек ретінде белгіленеді, белгіленген мазмұн ретінде емес. CDATA бөлімі – мінездемелік деректерді берудің баламалы синтаксисі ғана; CDATA бөліміндегі мінездемелік деректер мен стандартты синтаксистегі мінездемелік деректер арасында ешқандай семантикалық айырмашылық жоқ, мысалы, "<" және "&" әріптері тиісінше "<" және "&" арқылы бейнеленеді.
In an XML document or external entity, a CDATA section is a piece of element content that is marked up to be interpreted literally, as textual data, not as marked up content. A CDATA section is merely an alternative syntax for expressing character data; there is no semantic difference between character data in a CDATA section and character data in standard syntax where, for example, "<" and "&" are represented by "<" and "&", respectively.
CDATA бөлімдерін пайдалану
XML құжаттарын жаңадан жасайтындар CDATA бөлімінің мақсатын жиі дұрыс түсінбейді, оның мақсаты өңдеу кезінде деректерді әдеттегі таңбалық дерек ретінде қараудан "қорғау" деп жаңылысады. XML құжаттарымен жұмыс істеуге арналған кейбір API деректерді CDATA бөлімдеріне тәуелсіз түрде қол жеткізуге мүмкіндік береді, бірақ мұндай мүмкіндіктер XML өңдеу жүйелерінің қалыпты талаптарынан тыс және деректердің мәнін өзгерте алмайды. Таңбалық дерек CDATA бөлімі арқылы немесе әдеттегі белгілеу арқылы берілсе де, ол таңбалық дерек болып қалады. CDATA бөлімдері XML кодын XML құжатының ішінде мәтіндік дерек ретінде жазу үшін ыңғайлы. Мысалы, егер сіз XML қолданбасын пайдалануды түсіндіретін XSL арқылы кітапты безендіргіңіз келсе, кітапта көрсетілуі тиіс XML белгілеуі бастапқы файлда CDATA бөлімінде жазылады.
New authors of XML documents often misunderstand the purpose of a CDATA section, mistakenly believing that its purpose is to "protect" data from being treated as ordinary character data during processing. Some APIs for working with XML documents do offer options for independent access to CDATA sections, but such options exist above and beyond the normal requirements of XML processing systems, and still do not change the implicit meaning of the data. Character data is character data, regardless of whether it is expressed via a CDATA section or ordinary markup. CDATA sections are useful for writing XML code as text data within an XML document. For example, if one wishes to typeset a book with XSL explaining the use of an XML application, the XML markup to appear in the book itself will be written in the source file in a CDATA section.
Кодтау мәселесі
Мәтіндік деректерде <?xml ?> тақырыбында белгіленген кодтауда қолжетімсіз кез келген Юникод символын &#nnn; сандық символ сілтемесі арқылы көрсетуге болады. Алайда, CDATA бөліміндегі мәтін кодтауда бар символдармен ғана шектеледі. Осы себепті, CDATA бөлімін бағдарламалық түрде '&' немесе '<' символдары болуы мүмкін деректерді көрсету үшін пайдалану, деректерде кодтауға жатпайтын символдар кездескенде мәселе тудыруы мүмкін. Кодтаушының іске асырылуына байланысты, мұндай символдар жоғалуы, &#nnn; символ сілтемелеріне түрлендірілуі немесе кодтау қатесіне әкелуі мүмкін. Бірақ олар сақталмайды. Тағы бір мәселе – XML құжаты тасымалдау барысында бір кодтаудан екіншісіне түрлендірілуі мүмкін. XML құжаты ASCII сияқты шектеулі символдар жиынтығына түрлендірілгенде, енді бейнеленбес символдар жоғалтусыз түрлендіру үшін &#nnn; символ сілтемелеріне түрлендіріледі. Алайда, CDATA бөлімінде мұндай символдарды көрсету мүмкін емес, оларды жоюға немесе эквивалент символға түрлендіруге болады, бұл CDATA бөлімінің мазмұнын өзгертеді.
In text data, any Unicode character not available in the encoding declared in the <?xml ?> header can be represented using a &#nnn; numerical character reference. But the text within a CDATA section is strictly limited to the characters available in the encoding. Because of this, using a CDATA section programmatically to quote data that could potentially contain '&' or '<' characters can cause problems when the data happens to contain characters that cannot be represented in the encoding. Depending on the implementation of the encoder, these characters can get lost, can get converted to the characters of the &#nnn; character reference, or can cause the encoding to fail. But they will not be maintained. Another issue is that an XML document can be transcoded from one encoding to another during transport. When the XML document is converted to a more limited character set, such as ASCII, characters that can no longer be represented are converted to &#nnn; character references for a lossless conversion. But within a CDATA section, these characters can not be represented at all, and have to be removed or converted to some equivalent, altering the content of the CDATA section.