WikiDer > CDATA

CDATA

Atama CDATA, ma'no belgilar ma'lumotlari, aniq maqsadlar uchun ishlatiladi, lekin tegishli belgilash tillari SGML va XML. Ushbu atama hujjatning ma'lum bir qismi umumiy ekanligini ko'rsatadi belgilar ma'lumotlari, belgi bo'lmagan ma'lumotlar yoki aniqroq, cheklangan tuzilishga ega belgilar ma'lumotlari o'rniga.

XML-dagi CDATA bo'limlari

XML hujjatida yoki tashqi shaxsda, a CDATA bo'limi bu belgilangan tarkib sifatida emas, balki matnli ma'lumotlar sifatida so'zma-so'z talqin qilinishi uchun belgilanadigan element tarkibining bir qismidir. CDATA bo'limi faqat belgilar ma'lumotlarini ifodalash uchun muqobil sintaksis; CDATA bo'limidagi belgilar ma'lumotlari va standart sintaksisdagi belgilar ma'lumotlari o'rtasida semantik farq yo'q, masalan, "<"va"&"bilan ifodalanadi"& lt;"va"& amp;"navbati bilan.

Sintaksis va talqin

CDATA bo'limi quyidagi ketma-ketlik bilan boshlanadi:

<! [CDATA [

va ketma-ketlikning navbatdagi paydo bo'lishi bilan tugaydi:

]]>

Ushbu ikkita ketma-ketlik orasida joylashgan barcha belgilar belgilash yoki shaxsga havolalar emas, balki belgilar sifatida talqin etiladi. Har qanday belgi so'zma-so'z qabul qilinadi, faqat istisno - bu ]]> belgilar ketma-ketligi. In:

<sender>Jon Smit</sender>

start va end "jo'natuvchi" teglari belgilash sifatida talqin etiladi. Biroq, kod:

<![CDATA[<sender>John Smith</sender>]]>

ga teng:

& lt;jo'natuvchi& gt;Jon Smit& lt;/ jo'natuvchi& gt;

Shunday qilib, "teglar" "Jon Smit" bilan bir xil maqomga ega bo'ladi; ular matn sifatida ko'rib chiqiladi.

Xuddi shunday, agar raqamli belgilar ma'lumotnomasi &#240; element tarkibida ko'rinadi, u bitta deb talqin qilinadi Unicode belgi 00F0 (kichik harf axloqiy). Ammo agar CDATA bo'limida xuddi shu narsa paydo bo'lsa, u oltita belgi sifatida ajratiladi: ampersand, xash belgisi, 2-raqam, 4-raqam, 0-raqam, vergul.

CDATA bo'limlaridan foydalanish

XML hujjatlarining yangi mualliflari ko'pincha CDATA bo'limining maqsadini noto'g'ri tushunishadi, chunki uning maqsadi ma'lumotlarni qayta ishlash paytida oddiy belgilar ma'lumotlari sifatida qabul qilinishidan "himoya qilish" deb o'ylashadi. XML hujjatlari bilan ishlash uchun ba'zi bir API-lar CDATA bo'limlariga mustaqil kirish imkoniyatlarini taqdim etadi, ammo bunday imkoniyatlar XML ishlov berish tizimlarining odatiy talablaridan yuqori va tashqarida mavjud bo'lib, hanuzgacha ma'lumotlarning yashirin ma'nosini o'zgartirmaydi. Belgilar ma'lumotlari - bu CDATA bo'limi yoki oddiy belgilash orqali ifodalanishidan qat'i nazar, belgilar haqidagi ma'lumotlar. CDATA bo'limlari XML kodini matnli ma'lumotlar sifatida XML kodini yozish uchun foydalidir. Masalan, kimdir kitob yozishni xohlasa XSL XML dasturidan foydalanishni tushuntirib, kitobning o'zida paydo bo'ladigan XML belgisi CDATA bo'limidagi manba faylida yoziladi.

Uyalash

CDATA bo'limi "" qatorini o'z ichiga olmaydi]]>"va shuning uchun CDATA bo'limida ichki CDATA bo'limlari bo'lishi mumkin emas. Uchburchakni o'z ichiga olgan matnni kodlash uchun CDATA bo'limlaridan foydalanishga afzal yondashuv"]]>"uchlikning har bir paydo bo'lishini" oldin>". Masalan, kodlash uchun"]]>"yozishi mumkin edi:

<![CDATA[]]]]><![CDATA[>]]>

Bu shuni anglatadiki "]]>"CDATA bo'limining o'rtasida, barcha hodisalarni almashtiring"]]>"quyidagilar bilan:

]]]]><![CDATA[>

Bu CDATA bo'limini samarali ravishda to'xtatadi va qaytadan boshlaydi.

Kodlash bilan bog'liq muammolar

Matnli ma'lumotlarda kodlashda mavjud bo'lmagan har qanday Unicode belgisi mavjud <?xml ...?> sarlavha a yordamida ifodalanishi mumkin & # nnn; raqamli belgilar ma'lumotnomasi. Ammo CDATA bo'limidagi matn kodlashda mavjud bo'lgan belgilar bilan qat'iy cheklangan.

Shu sababli, potentsial tarkibiga kirishi mumkin bo'lgan ma'lumotlarni keltirish uchun dasturiy ravishda CDATA bo'limidan foydalanish '&"yoki"<Ma'lumotlar tarkibida kodlashda ko'rsatib bo'lmaydigan belgilar mavjud bo'lganda, belgilar muammolarga olib kelishi mumkin. Kodlovchi amalga oshirilishiga qarab, bu belgilar yo'qolishi, ning belgilariga aylanishi mumkin & # nnn; belgilarga mos yozuvlar yoki kodlashning ishlamay qolishiga olib kelishi mumkin. Ammo ular saqlanib qolmaydi.

Yana bir masala shundaki, an XML tashish paytida hujjatni bitta kodlashdan boshqasiga transkodlash mumkin. Qachon XML hujjat cheklangan belgilar to'plamiga aylantiriladi, masalan ASCII, endi ko'rsatib bo'lmaydigan belgilar o'zgartiriladi & # nnn; kayıpsız konvertatsiya qilish uchun belgilar ma'lumotnomalari Ammo CDATA bo'limida ushbu belgilar umuman ifodalanishi mumkin emas va ularni olib tashlash yoki ba'zi bir ekvivalentga o'tkazish kerak, bu esa CDATA bo'limining tarkibini o'zgartirishi kerak.

Dastur chiqishda CDATA-dan foydalanish

CDATA bo'limlari XHTML Hujjatlarni HTML shaklida ko'rsatadigan bo'lsa, veb-brauzerlar tomonidan hujjatlar boshqacha tahlil qilinishi kerak, chunki HTML tahlilchilari CDATA boshlang'ich va tugatish belgilarini tanimaydilar va HTML litsenziyalarini tanimaydilar & lt;

CDATA tipidagi atribut qiymati

Yilda Hujjat turini aniqlash SGML va XML uchun (DTD) fayllar, atribut qiymati CDATA turi sifatida belgilanishi mumkin: o'zboshimchalik bilan belgilar ma'lumotlari. CDATA tipidagi atribut ichida belgi va ob'ektga mos yozuvlar belgisiga ruxsat beriladi va hujjat o'qilganda ishlanadi.

Masalan, agar XML DTD tarkibida bo'lsa

 foo a CDATA # MAVJUD>

demak, foo deb nomlangan elementlar ixtiyoriy ravishda "" nomli atributga ega bo'lishi mumkin.a"bu CDATA turiga tegishli. Ushbu DTDga muvofiq bo'lgan XML hujjatida shunday element paydo bo'lishi mumkin:

 a ="1 & amp; 2 & lt; & # 51; & # x0A;" />

va XML tahlil qiluvchisi "a"belgining ma'lumoti sifatida atributning qiymati"1 va 2 <3 ga teng".

CDATA tipidagi shaxs

SGML yoki XML DTD tarkibiga belgi ma'lumotlaridan iborat ekanligini ko'rsatish uchun CDATA ma'lumoti ishlatilgan shaxs deklaratsiyalari ham kiritilishi mumkin. Belgilar ma'lumotlari deklaratsiyaning o'zida paydo bo'lishi mumkin yoki tashqi tomondan mavjud bo'lishi mumkin, a tomonidan havola qilingan URI. Ikkala holatda ham, ob'ektda belgilarga mos yozuvlar va parametrlar moslamalarini moslashtirishni belgilashga ruxsat beriladi va u o'qilganda shunday ishlov beriladi.

 Xususiyat ="Y"><![CDATA[PFTEST0__COUNTER_6__:4:199:, PFTEST0__COUNTER_7__:4:199:]]></DISPLAY_NAME>  ism ="" val ="" INTEGER ism ="" val ="" UZOQ ism ="" val =""/>

Shuningdek qarang

Adabiyotlar

Tashqi havolalar