XML yordamida ma'lumotlarning tavsifi. Yaxshi shakllangan XML hujjatlarni yaratish. XML hujjatining tuzilishi. Prolog, root element

XML hujjatlari tuzilishining tavsifi.

Har bir XML hujjatida ma'lumotlar va uning tuzilishi (metama'lumotlar tavsifi) haqida ma'lumotlar mavjud.

XML hujjatlari ikki xil bo'lishi mumkin:

1. mantiqiy va tarkibiy qoidalarni hisobga olgan holda tuzilgan hujjatlar;

2. XML hujjatlarini formatlash uchun sintaktik qoidalardan tashqari hech qanday qoidalardan foydalanmaydigan hujjatlar.

XML protsessori birinchi turdagi hujjatlarni belgilangan qoidalarga muvofiqligini tekshiradi. Ikkinchi turdagi hujjatlarni tekshirish ishlab chiquvchi tomonidan amalga oshiriladi.

Birinchi turdagi hujjatni yaratishda uning tuzilishini tavsiflash Document Type Definitions (DTD), XML Schema, RELAX NG, XML Data-Reduced va boshqalar kabi tillar yordamida amalga oshirilishi mumkin, eng keng tarqalgan tillar DTD va XML sxemalari.

Keyinchalik, eng keng tarqalgan tuzilishni tavsiflash tillarining kuchli va zaif tomonlari tahlil qilinadi va ularning asoslari umumlashtiriladi. Ushbu o'quv qo'llanma axborot tizimlarini birlashtirish masalalariga bag'ishlanganligi sababli, strukturani tavsiflash tillarini ko'rib chiqishda asosiy e'tibor modullik va sxemalarni qayta ishlatish masalalariga qaratiladi.

XML sxemasini aniqlash (XSD) tili.

XML Schema Definition (XSD) tili XML-ga asoslangan va DTD-larga qaraganda hujjat tuzilishini tavsiflash uchun ko'proq imkoniyatlarga ega. Bu ma'lumotlarni yozishni, ism maydonlarini, doimiy iboralarni qo'llab-quvvatlaydi.

XML sxemasi XML hujjatining elementlari va atributlarining tavsifini, nasllarni meros qilib olish qoidalarini, shu jumladan avlodlar tartibini va sonini, elementlarning tarkib turini, elementlar va atributlarning ma'lumotlar turlarini, elementlar va atributlarning qiymatlarini va qiymatlarga qo'shimcha cheklovlarni o'z ichiga oladi. Bundan tashqari, XML sxemasidan foydalanish XML hujjatini ma'lum bir turdagi ob'ektlar ierarxiyasiga aylantirishga imkon beradi, unga interfeys (PSV1 funktsionalligi) yordamida dasturiy kirish mumkin.

XML sxemasi tilining asosiy ustunligi bu kuchli terilgan ma'lumotlarni qo'llab-quvvatlashdir. Turli xil ilovalar va ma'lumotlar bazalari o'rtasida ma'lumot almashish paytida ma'lumotlar turlarini moslashtirish muammosi doimo dolzarb bo'lib qoladi, chunki ma'lumotlar tizimlarining ta'riflari turli xil tizimlarda farq qilishi mumkin. Ushbu farqlar maksimal va minimal mumkin bo'lgan qiymatlarni, eng uzun uzunlikni, kasr sonlarini qo'llab-quvvatlashni, ichki kodlashni va tashqi formatni (masalan, sana va vaqt uchun) o'z ichiga oladi. Shunday qilib, ma'lumotlar turlarining nomlari bir-biriga mos kelishi mumkin bo'lsa-da, ularning bajarilishi har bir mahsulotda farq qilishi mumkin. Sxemalarda ma'lumotlar turlaridan foydalanish ma'lumotlar almashish yoki bir nechta tizimlar bilan bo'lishishda hujjat ma'lumotlarini zaruriy tekshirishni amalga oshirishga imkon beradi.

Ushbu o'quv qo'llanma XML sxemasi bo'yicha to'liq qo'llanma emas, shuning uchun biz bu erda faqat XSD tilining asosiy bilimlari bilan cheklanib qolamiz, bu esa quyidagi materialni tushunish uchun zarurdir.

XML sxemasi har doim xsd kengaytmasi bilan alohida faylda yaratiladi. XML fayli, sxema nomlari maydonining schemaLocation atributidan foydalanib, tegishli sxema bilan bog'langan. SchemaLocation atributidan foydalanish uchun sxema nomlari maydoni aniqlanishi kerak. Ushbu ta'riflarning barchasi XML hujjatining asosiy elementida ko'rsatilgan.

Keling, XML sxemasi tuzilishining asosiy elementlarini ko'rib chiqamiz.

Ildiz elementi doimo element hisoblanadi ... Element atributlarining tavsifi jadvalda keltirilgan. 2.10.

Ildiz elementi quyidagi bolalarni o'z ichiga olishi mumkin:

1. - XML \u200b\u200bhujjati elementlarini aniqlash uchun foydalaniladi;

2. - XML \u200b\u200bhujjatining atributlarini aniqlash uchun foydalaniladi;

3. - guruh nomiga murojaat qilib sxema doirasida qayta ishlatishga mo'ljallangan elementlar guruhini aniqlash uchun talab qilinadi;

4. - elementlar guruhining atributlarini aniqlash uchun ishlatiladi;

5. - xml-hujjatlarga hujjatlarni kiritishga imkon beradi;

6. - asosiy zanjirda ko'rsatilgan tashqi zanjirning tarkibiy qismlaridan foydalanishga imkon beradi (zanjirlarning modulliligini ta'minlaydi);

7. - ko'rsatilgan tashqi zanjirning barcha komponentlarini asosiy zanjirga qo'shadi (zanjirlarning modulligini ta'minlaydi);

8. - XML \u200b\u200bhujjatidagi XML bo'lmagan ma'lumotlarning formatini tavsiflovchi yozuvning ta'rifini o'z ichiga oladi;

9. - asosiy sxema bilan bir xil nom maydoniga ega bo'lgan tashqi sxemaning tarkibiy qismlarini bekor qiladi;

10. - elementning oddiy tarkibini e'lon qiladi. Oddiy ma'lumotlar turlariga ega bo'lgan elementlar faqat belgi ma'lumotlarini o'z ichiga olishi mumkin va atributlar yoki qo'shimcha elementlarni o'z ichiga olmaydi;

11. - atributlar va boshqa elementlarni o'z ichiga olishi mumkin bo'lgan murakkab element tarkibini e'lon qiladi.

XML sxemasi ma'lumotlar turlarining uchta asosiy toifalarini qo'llab-quvvatlaydi:

1. oldindan belgilangan ibtidoiy turlar - elementlarga va atributlarga havola qilinadigan va qo'llanilishi mumkin bo'lgan asosiy ma'lumotlar turlari. Ibtidoiy ma'lumotlar turlariga misol qilib String, Float, Double, Time, Date, Decimal, AnyURI;

2. oldindan belgilangan kelib chiqish turlari - ibtidoiy turlardan kelib chiqqan ichki tiplar. Olingan ma'lumotlar turlariga misollar Integer, Long, Byte, Short, nonPositivelnteger, nonNegativelnteger, ID va boshqalar.

3. nostandart turlari - qo'shimcha cheklovlarni joriy qilish orqali ibtidoiy yoki olingan turlardan yaratilgan foydalanuvchi tomonidan aniqlangan ma'lumotlar turlari. Nostandart ma'lumotlar turlarini qo'llab-quvvatlash biznes mantig'ini hisobga olgan holda ma'lumotlarni tekshirish uchun juda foydali.

XML sxemasi ma'lumotlar turlarini oldindan belgilab qo'ygan (ibtidoiy va olingan) elementlar va atributlarni tavsiflash uchun quyidagi sintaksisdan foydalanadi.

Ixtiyoriy ravishda, elementlar va atributlar uchun siz sobit element / atribut qiymatlarini yoki standart qiymatlarni belgilash uchun sobit yoki standart atributlarni belgilashingiz mumkin.

Agar element yoki atribut uchun nostandart ma'lumotlar turini tavsiflash zarur bo'lsa, unda bu teg yordamida amalga oshirilishi kerak undagi yangi ma'lumotlar turini tavsiflash orqali.

Ma'lumotlarning yangi nostandart turlari quyidagicha olinadi:

1. Qo'shimcha cheklovlarni ko'rsatish orqali o'rnatilgan yoki ilgari aniqlangan oddiy turni cheklash;

2. oddiy turdagi kasaba uyushmalari (birlashmasi);

3. oddiy turlari ro'yxatidan foydalanish.

Oldindan aniqlangan turni qisqartirish natijasida olingan yangi oddiy ma'lumotlar turidan foydalanish misoli (mag'lubiyatning maksimal va minimal uzunligiga tayanch satriga cheklovlar qo'yilgan):

Asosiy turlarni birlashtirish orqali olingan yangi oddiy ma'lumotlar turidan foydalanish misoli (element yoki atribut manfiy yoki musbat bo'lmagan tamsayı qiymatlarini olishi mumkin):

Oddiy turlar ro'yxatidan foydalanishga misol (shoeSizes atributi 10.5, 9, 8 va 11 o'nlik qiymatlarini o'z ichiga olgan ro'yxat sifatida e'lon qilinadi):

XML sxemasi tilida har xil ma'lumotlar cheklovlari qo'llaniladi (2.8-jadvalga qarang):

1. uzunlik cheklovlari (belgilar soni);

2. qadriyatlar chegaralari (diapazon yoki chegara sifatida eng yuqori va eng past qiymatlar);

3. kasr sonining raqamlari sonini cheklash (raqamlarning umumiy soni yoki kasrdan keyingi raqamlar soni);

4. qabul qilinadigan qiymatlar ro'yxati;

5. shablonlar;

6. kosmik belgilar bilan ishlash.

Turli xil cheklovlardan foydalanish misollari jadvalda keltirilgan. 2.11.

Oddiy turdagi yoki oldindan belgilangan standart turdagi elementlar faqat ma'lumotlarni o'z ichiga olishi mumkin (atributlar yoki asosiy elementlarni o'z ichiga olmaydi).

Ma'lumotlarning har qanday oddiy turi o'zboshimchalik bilan cheklovlar to'plamini o'z ichiga olishi mumkin, bu ma'lumotlar dasturining biznes mantig'i bilan belgilanadi.

Agar nom oddiy ma'lumotlar turiga berilsa, u holda ushbu sxemada yangi nostandart ma'lumotlar turiga havola qayta ishlatilishi mumkin (oldindan aniqlangan ma'lumotlar turlariga havolaga o'xshash).

Ushbu misolda "satr" turiga asoslangan "Kod" deb nomlangan nostandart ma'lumotlar turi aniqlangan: u "Code1" va "Code2" elementlari uchun ma'lumotlar turi sifatida ishlatiladi.

XML hujjatining asosiy elementlari va atributlarini o'z ichiga olgan elementlarini tavsiflash uchun sxema yorliq yordamida ko'rsatilgan murakkab ma'lumotlar turidan foydalanadi .

Murakkab turni tavsiflashda bolalar elementlarining paydo bo'lish tartibi ko'rsatiladi (maxsus teglar yordamida - buyurtma ko'rsatkichlari, 2.11-jadvalga qarang), shuningdek takrorlanadigan elementlarning muhimligi darajasi (minOccurs va maxOccurs atributlaridan foydalangan holda).

MinOccurs Attribute kardinallikning minimal darajasini, ya'ni bolani takrorlashning eng kichik sonini belgilaydi. MinOccurs qiymati nol ixtiyoriy elementni bildiradi.

MaxOccurs xususiyati kardinallikning maksimal darajasini yoki elementning takrorlanishining eng ko'p sonini aniqlaydi. Kardinallikning maksimal va minimal darajalari ma'lum qiymatlar bilan belgilanadi. MaxOccurs cheksiz deb belgilanishi mumkin (element har qanday marta paydo bo'ladi).

Ushbu misolda "Sarlavha", "Muallif", "Kod", "Narx" elementlarini o'z ichiga olgan "Kitob" elementi uchun murakkab ma'lumotlar turi tasvirlangan. Teg bolalar elementlarining paydo bo'lish tartibining ko'rsatkichidir (2.12-jadval) va maxOccurs atributi "Muallif" elementining takrorlanishining maksimal sonini ko'rsatadi.

Tanlov buyurtmasi indikatori ushbu narx turidagi buyumda Rubl yoki Dollar bo'lishi mumkin, lekin ikkalasi ham emas.


Shunga o'xshash ma'lumotlar.


XML umumiy foydalanish uchun mo'ljallangan, belgilar 7-bitli ASCII belgilar to'plami bilan chegaralanmaydi. XML-da ruxsat berilgan belgilar uchta ASCII CO boshqaruv belgilaridir, ASCII standartining barcha oddiy belgilar va deyarli barcha Unicode belgilar.

Ismlar.

XML-da barcha ismlar harf, pastki chiziq (_) yoki ikki nuqta (:) bilan boshlanib, faqat ismlar uchun yaroqli bo'lgan belgilar bilan davom etishi kerak, ya'ni ularda faqat Unicode harflar bo'limiga kiritilgan harflar, arabcha raqamlar, defislar, alomatlar bo'lishi mumkin. pastki chiziqlar, nuqta va nuqta. Biroq, nomlar har qanday holatda ham xml satridan boshlana olmaydi. Ushbu belgilar bilan boshlangan ismlar W3C tomonidan ishlatilishi mumkin. Shuni esda tutish kerakki, harflar faqat ASCII belgilar bilan cheklanmaganligi sababli, ismlarda ona tilidan so'zlar ishlatilishi mumkin.

XML hujjat tarkibi.

Har qanday XML hujjati quyidagi qismlardan iborat:

  • Ixtiyoriy prolog.
  • Hujjatning asosiy qismi.
  • Ob'ekt daraxtidan keyin ixtiyoriy epilog.

Keling, har bir qismni batafsilroq ko'rib chiqamiz.

XML Document Prologue.

XML hujjati prolog bilan boshlanadi. Prolog XML-tahlilchi va dasturlar uchun ba'zi ko'rsatmalar beradi.

Prolog bir necha qismdan iborat:

  1. belgilar orasida joylashgan ixtiyoriy XML deklaratsiyasi... Reklama quyidagilarni o'z ichiga oladi:
    • xml belgisi va XML spetsifikatsiyasining versiya raqami (versiyasi);
    • hujjat yozilgan belgilar kodlash (kodlash) ko'rsatkichi (sukut bo'yicha kodlash \u003d "UTF-8");
    • "ha" yoki "yo'q" bo'lishi mumkin bo'lgan mustaqil parametr (sukut bo'yicha mustaqil \u003d "ha"). "Ha" qiymati hujjat barcha kerakli element deklaratsiyalarini o'z ichiga olganligini, "yo'q" esa tashqi DTDlar kerakligini bildiradi.

    Bularning barchasi birgalikda quyidagicha ko'rinishi mumkin:

    .

    Shuni ta'kidlash kerakki, XML deklaratsiyasida faqat versiya atributi talab qilinadi, boshqa barcha atributlar o'tkazib yuborilishi mumkin va shuning uchun standart qiymatlarni qabul qiladi. Shuni ham yodda tutish kerakki, ushbu atributlarning barchasi faqat yuqoridagi tartibda ko'rsatilishi kerak.

  2. izohlar.
  3. buyruqlarni qayta ishlash.
  4. oq kosmik belgilar.
  5. ixtiyoriy hujjat turi deklaratsiyasiBelgilar o'rtasida joylashgan DTD (Hujjat turi deklaratsiyasi) va bir nechta qatorlarni qamrab olishi mumkin. Ushbu qism hujjatda ishlatilgan teglarni e'lon qiladi yoki bunday deklaratsiyalar yozilgan faylga havola beradi.

Keyin hujjat turi deklaratsiyasi izohlar, ishlov berish buyruqlari va bo'sh joy belgilari ham amal qilishi mumkin.

Ushbu qismlarning barchasi ixtiyoriy bo'lgani uchun, prologni qoldirish mumkin.

XML hujjat tanasi.

Hujjatning asosiy qismi bir yoki bir nechta elementlardan iborat. Yaxshi shakllangan XML hujjatida elementlar oddiy ierarxik daraxtni hosil qiladi, unda ildiz elementi (root element), unda hujjatning barcha boshqa elementlari joylashtirilgan. XML elementlarga o'ta muhim cheklov qo'yadi - ular to'g'ri joylashtirilgan bo'lishi kerak. Bu esa, biron bir XML hujjatni boshqasiga joylashtirish uchun hujjatning tuzilishini buzmasdan osonlashtiradi ildiz elementi subhujjat hujjatning bo'linadigan elementlaridan biriga aylanadi. Shu nuqtai nazardan, biz boshqa bir cheklovga duch kelmoqdamiz, ya'ni elementlarning nomlari hujjat ichida noyob bo'lishi kerak, chunki kiritilgan hujjat tarkibidagi hujjatdagi ismlar mutlaqo boshqa ma'noga ega bo'lishi mumkin. Ismlarni moslashtirish masalasini hal qilish uchun ism maydoni tushunchasi kiritiladi.

Ildiz elementining nomi butun hujjatning nomi hisoblanadi va prologning ikkinchi qismida Doctype so'zidan keyin ko'rsatiladi. Agar DTD ta'rifi XML hujjat ichida bo'lsa, u holda ildiz element nomidan keyin to'rtburchak qavslarga joylashtiriladi:

Ammo, odatda, DTD bir vaqtning o'zida bir nechta XML hujjatlari uchun yoziladi. Bunday holda, uni hujjatdan alohida yozish qulay, keyin kvadrat qavslar o'rniga System yoki Public so'zlaridan biri yoziladi, so'ngra DTD ta'rifi bo'lgan faylning URI (Uniform Resource Identifier) \u200b\u200bko'rinishidagi manzili yoziladi. Barcha amaliy maqsadlar uchun URI URL-ning ekvivalenti hisoblanadi, garchi u printsipial jihatdan har qanday noyob nom bo'lishi mumkin. Masalan, DTD ta'rifi quyidagicha ko'rinishi mumkin:

XML nom maydonlari

Turli xil XML hujjatlarida bir xil teglar nomlari va ularning atributlari bo'lishi mumkin, ular umuman boshqacha ma'noga ega, ularni qandaydir tarzda ajrata olishingiz kerak. Buning uchun teglar va atributlarning nomlari qisqa prefiks bilan ta'minlanadi, bu nomdan ko'p nuqta bilan ajratiladi. Ism prefiksi aniqlovchi identifikator bilan bog'langan ism maydoni (ism maydoni). Bir xil identifikator bilan bog'langan prefiksli barcha yorliq va atribut nomlari bitta shaklni tashkil qiladi ism maydoniunda nomlar noyob bo'lishi kerak. Ism maydonining prefiksi va identifikatori xmlns atributi bo'yicha quyidagicha aniqlanadi:

Quyida, biz "http: // URI_namespace" nom maydoniga murojaat qilmoqchi bo'lgan teglar va atributlarning nomlari ns bilan qo'shilgan, masalan:

Novosibirsk.

Xmlns atributi faqat ildizda emas, balki har qanday XML elementida paydo bo'lishi mumkin. U tomonidan belgilangan prefiks xmlns atributi yozilgan elementda va uning ichiga joylashtirilgan barcha elementlarda ishlatilishi mumkin. Bundan tashqari, bitta elementda bir nechta nom maydoni aniqlanishi mumkin. Ichki elementlarda ism maydoni prefiksni boshqa identifikator bilan bog'lash orqali bekor qilinishi mumkin. Hujjatda prefikssiz yorliq nomining paydo bo'lishi ism maydoni, ism standart nomlar maydoniga tegishli degan ma'noni anglatadi. Xml belgilaridan boshlanadigan prefikslar har qanday holatda ham XMLning o'zi uchun saqlanadi.

Ism prefiks bilan birgalikda kengaytirilgan yoki malakali ism deb ataladi. Yo'g'on ichakdan keyin yozilgan ism qismi ismning mahalliy qismi deb ataladi.

XML (kengaytiriladigan belgilash tili) - bu o'zboshimchalik bilan ko'rsatmalar to'plami yordamida har xil turdagi ma'lumotlarni tuzish imkonini beradigan yangi SGML-dan olingan hujjatlarni belgilash tili. Amalda yangi texnologiyadan foydalanishga harakat qilayotgan Internet dasturlarini ishlab chiquvchilar XML hujjatlarini yaratish, qayta ishlash va ularni mijoz tomonida namoyish qilish muammolari bilan bog'liq aniq masalalar bilan qiziqishlari mumkin. Ushbu maqolada XML hujjati nima va u nima uchun ekanligi haqida qisqacha ma'lumot berilgan va amaliy misollar ba'zi sodda, ammo afsuski, juda kam tavsiflangan ishlov berish mexanizmlarini aks ettiradi.

XML nima?

Bugungi kunda XML-dan tuzilgan ma'lumotlarga muhtoj bo'lgan har qanday dasturlarda - katta hajmdagi uzatiladigan ma'lumotlarga ega bo'lgan murakkab geografik axborot tizimlaridan tortib, xizmat ma'lumotlarini tavsiflash uchun ushbu tildan foydalanadigan oddiy "bitta kompyuter" dasturlariga qadar foydalanish mumkin. Atrofimizdagi axborot dunyosiga yaqindan nazar tashlab, XML-dan foydalanish uchun tuzilgan ma'lumotni yaratish va qayta ishlash bilan bog'liq ko'plab vazifalarni ajratib ko'rsatish mumkin:

  • Birinchidan, ushbu texnologiya juda ko'p turli xil tuzilmalardagi axborot oqimlari bilan bog'langan ko'plab dasturlarga ega bo'lgan murakkab axborot tizimlarini ishlab chiquvchilar uchun foydali bo'lishi mumkin. Bunday holda, XML hujjatlari katta dasturning alohida tarkibiy qismlari o'rtasida ma'lumot almashish uchun universal format vazifasini bajaradi.
  • XML - bu Internetda kerakli ma'lumotlarni topish, tarmoq resurslari tarkibini boshqarish, raqamli kutubxonalar yaratish va boshqalar bilan bog'liq ko'plab muammolarni soddalashtiradigan RDF yangi resurslarni ta'riflash tili uchun asosiy standart.
  • XML har qanday turdagi ma'lumotlarni tavsiflashga imkon beradi va kimyoviy, matematik, fizikaviy formulalar, tibbiy retseptlar, musiqiy notalar va boshqalar kabi maxsus ma'lumotlarni taqdim etish uchun ishlatiladi. Bu shuni anglatadiki, XML Internetda "nostandart" ma'lumotlarni tarqatish uchun HTML-ga kuchli qo'shimcha sifatida xizmat qilishi mumkin. Ehtimol, yaqin kelajakda XML HTML-ni to'liq o'rnini bosishi mumkin, hech bo'lmaganda ushbu ikki tilni birlashtirishga birinchi urinishlar allaqachon amalga oshirilmoqda (spetsifikatsiya).
  • XML hujjatlari uch darajali tizimlarda oraliq ma'lumotlar formati sifatida ishlatilishi mumkin. Odatda, dastur serverlari va ma'lumotlar bazalari o'rtasidagi o'zaro bog'liqlik ma'lumotlar bazasiga kirish uchun foydalaniladigan ma'lum DBMS va SQL dialektiga bog'liq. Agar so'rov natijalari biron bir universal matn formatida taqdim etilsa, DBMS havolasi dastur uchun "shaffof" bo'ladi. Bundan tashqari, bugungi kunda W3C kelajakda SQLga muqobil bo'lishi mumkin bo'lgan yangi ma'lumotlar bazasi so'rovlari tili XQL uchun spetsifikatsiyani taklif qildi.
  • XML hujjatlaridagi ma'lumotlar o'zgartirilishi, mijozlar mashinasiga uzatilishi va qismlarga bo'linib yangilanishi mumkin. Ishlab chiqilayotgan XLink va Xpointer spetsifikatsiyalari ularning joylashishi va atributlari qiymatlarini hisobga olgan holda alohida hujjat elementlariga murojaat qilishingizga imkon beradi.
  • Stil jadvallaridan foydalanish (XSL) ma'lum bir chiqish moslamasidan mustaqil ravishda XML hujjatlarini taqdim etishga imkon beradi.
  • XML tuzilgan ma'lumotlarni bitta formatda saqlash va qayta ishlash uchun umumiy dasturlarda ishlatilishi mumkin.

XML hujjati bu oddiy matnli fayl bo'lib, unda ma'lumotlar elementlari maxsus markerlar yordamida yaratiladi, ketma-ketligi va joylashishi hujjatning tuzilishini va tarkibini belgilaydi. XML hujjatlarining asosiy ustunligi shundaki, yaratish va qayta ishlashning nisbatan sodda usuli bilan (oddiy matnni istalgan test protsessori tahrirlashi va uni standart XML tahlilchilari qayta ishlashi mumkin), ular kompyuterlar yaxshi "tushunadigan" tuzilgan ma'lumotlarni yaratishga imkon beradi.

XML hujjatini qanday yaratish mumkin?

Oddiy holatda, sizga XML hujjat yaratish uchun oddiy matn muharriridan boshqa narsa kerak emas (ko'plab veb-dizaynerlarning fikriga ko'ra, veb-sahifalarni yaratish uchun eng yaxshi vosita). Oddiy daftar o'rniga ishlatiladigan kichik XML hujjatining namunasi:

Muhim biznes uchrashuvi Uchrashuvim kerak Ivan Ivanovichunga telefon orqali qo'ng'iroq qilib 123-12-12 ... Uyga qo'ng'iroq qiling 124-13-13

O'zingizning belgilash tilingizni yaratishda siz ulardan foydalanish kontekstiga mos keladigan har qanday element nomlarini (deyarli barchasi, chunki ruxsat berilgan belgilar ro'yxati cheklangan va berilgan) taklif qilishingiz mumkin. Bizning misolimiz kundalik tuzilmani yaratishning ko'pgina usullaridan biridir. Bu XML-dan kelib chiqqan tillarning egiluvchanligi va kengaytirilishi - ularni hujjat tuzilishi haqidagi g'oyalariga ko'ra ishlab chiquvchi tezda yaratadi va undan keyin XML-dan olingan boshqa tillar singari universal tomoshabinlar ham foydalanishi mumkin. tahlil qilish uchun zarur bo'lgan barcha ma'lumotlar hujjat tarkibiga kiritilgan.

Yangi formatni yaratishda printsipial ravishda "XML-da yozilgan" hujjatlar bo'lishi mumkin emasligini hisobga olish kerak - har qanday holatda, hujjat mualliflari uni belgilash uchun XML-ga asoslangan (XML-dan kelib chiqqan deb ataladigan) tildan foydalanadilar, ammo emas XML o'zi. Shuning uchun yaratilgan faylni saqlashda uning nomiga mos keladigan kengaytmani tanlashingiz mumkin (masalan, noteML).

XML yordamida siz ma'lum bir dastur uchun zarur bo'lgan ma'lum bir turdagi va tuzilmadagi hujjatlarni yaratish uchun foydalanishingiz mumkin. Ammo, agar tilning doirasi etarlicha keng bo'lib chiqsa va u ko'plab ishlab chiquvchilarni qiziqtira boshlasa, unda uning spetsifikatsiyasi W3C-ga ko'rib chiqilishi mumkin va barcha manfaatdor tomonlarning kelishuvidan so'ng konsortsium tomonidan rasmiy tavsiya sifatida tasdiqlanadi.

Shuni ta'kidlash kerakki, yangi spetsifikatsiyani yaratish jarayoni juda uzoq va murakkab. W3C tomonidan taklif qilingan har qanday hujjat standartga aylanishidan oldin bir necha bosqichlardan o'tadi. Birinchidan, uning rivojlanishida ishtirok etadigan turli kompaniyalarning xohish-istaklari va tavsiyalari e'tiborga olingan eslatma, niyat protokoli shaklida rasmiylashtiriladi. Bunday hujjatlarda keltirilgan ma'lumotlar faqat konsortsium a'zolari tomonidan muhokama qilinishi uchun mo'ljallangan va keyinchalik ushbu sharhlar tavsiyanomaga aylanishiga hech kim kafolat berolmaydi.

Hujjatni targ'ib qilishning navbatdagi bosqichi - bu spetsifikatsiyaning ishchi versiyasi bo'lib, u kelajakda ushbu g'oyaga qiziquvchi kompaniyalar vakillarini o'z ichiga olgan maxsus tuzilgan Ishchi guruh tomonidan tuziladi va o'zgartiriladi. Ushbu hujjatga kiritilgan barcha o'zgartirishlar www.w3.org konsortsium-serverida e'lon qilinishi kerak va ishchi versiyasi tavsiyanomaga aylanmaguncha, u faqat ishlab chiquvchilar uchun "yo'l ko'rsatuvchi yulduz" bo'lib xizmat qilishi mumkin, u bilan kompaniya o'z rejalarini tekshirishi mumkin, ammo emas dasturiy ta'minotni ishlab chiqishda foydalanish kerak.

Agar tomonlar barcha asosiy masalalar bo'yicha kelishib olsalar va hujjatga jiddiy o'zgartirishlar kiritilsa, ishchi versiyasi Tavsiya etilgan tavsiyaga aylanadi va ishchi guruh a'zolari tomonidan ovoz berilgandan so'ng u allaqachon W3C-ning rasmiy tavsiyalariga aylanishi mumkin, bu esa maqomi bo'yicha WWW standartiga mos keladi.

XML generatorlari

XML hujjatlari ma'lumotni bir dasturdan boshqasiga o'tkazish uchun oraliq format bo'lib xizmat qilishi mumkin (masalan, ma'lumotlar bazasi so'rovi natijasida), shuning uchun ularning tarkibi ba'zan avtomatik ravishda dasturlar tomonidan ishlab chiqariladi va qayta ishlanadi. XML hujjatini qo'lda yaratish har doim ham zarur emas.

Masalan, bizning vazifamiz tizimda sodir bo'lgan ba'zi voqealarni yozish uchun ma'lumotlarni saqlash formatini yaratish (log fayli). Eng oddiy holatda, siz bizning resurslarimizga muvaffaqiyatli va noto'g'ri so'rovlarni yozib olish bilan cheklanishingiz mumkin - bunday hujjat voqea vaqti, uning natijasi (muvaffaqiyati / xatosi), so'rov manbasining IP-manzili, URI resursi va natija kodi to'g'risidagi ma'lumotlarni o'z ichiga olishi kerak.

Bizning XML hujjatimiz quyidagicha ko'rinishi mumkin:

195.151.62.18 OLING / misc / 200 195.209.248.12 OLING /soft.htm 200

Hujjatning tuzilishi juda oddiy - bu holda ildiz elementi log elementi bo'lib, har bir voqea voqea elementida qayd qilinadi va uning atributlari (sana vaqt va natija voqea turi) va ichki elementlar (usul kirish usuli, ip-dan manzil manba, url-to - so'ralgan manba, javob - javob kodi). Ushbu hujjatni yaratish, masalan, tizimga so'rovlarni autentifikatsiya qilish moduli va ro'yxatga olish ma'lumotlarini qayta ishlash dasturi (log viewer) yordamida amalga oshirilishi mumkin.

DTD nima?

Shunday qilib, biz XML hujjatini yaratdik va buning uchun ishlatiladigan teglar to'plami bizning ma'lumotlarimiz bilan har qanday manipulyatsiyani amalga oshirishga imkon berishiga ishonch hosil qildik. Bunday holda, yangi tilimizning qoidalarini o'rnatish uchun, ya'ni. tegishli elementlarning ro'yxati, ularning mumkin bo'lgan tarkibi va atributlari, biz DTD - ta'riflarni yaratishimiz kerak (ushbu yozuv paytida XML hujjatlari uchun spetsifikatsiya hali tasdiqlanmagan va hozirgacha DTDlar grammatikani tavsiflashning yagona standart usuli hisoblanadi).

Bizning XML hujjatimiz uchun kichik bir misol:

Ushbu faylni log.dtd sifatida saqlang va XML hujjatiga yangi qatorni kiriting:

Endi, hujjatni qayta ishlashda XML-tekshiruvchi elementlar va ularning atributlari ta'rifi tartibini bizning DTD yozuvlarida ko'rsatilgan usul bilan tekshiradi va ichki tuzilishi buzilgan taqdirda (hujjatning "semantikasi" ni aniqlaydi) xato xabari chiqaradi.

Ism maydonlari nima?

Yuqorida aytib o'tganimizdek, XML-dan foydalanishning go'zalligi - bu o'z nomlari bilan mo'ljallangan maqsadga eng mos keladigan teglarni yaratish qobiliyatidir. Ammo odamlarning tasavvur va so'z boyligi cheksiz emas, shuning uchun siz bergan element nomlari boshqa birov tomonidan ishlatilmasligiga mutlaqo kafolat yo'q. Sizning arizangiz faqat mahalliy XML hujjatlarini qayta ishlasa, hech qanday muammo bo'lmaydi. Xuddi shu hujjat bir vaqtning o'zida bir nechta protsessorlar uchun ma'lumotlarni o'z ichiga oladigan vaziyat bo'lishi mumkin. Bunday holda, ba'zi elementlarning nomlari yoki ularning atributlari mos kelishi mumkin, bu esa XML tahlil qiluvchida xato yoki hujjatning noto'g'ri taqdimotiga olib keladi. Masalan, bizning hodisa voqea elementi boshqa voqealarni yozib olish va boshqa dastur bilan ishlash uchun juda yaxshi ishlatilishi mumkin.

Ushbu vaziyatni bartaraf etish uchun biz odatiy nomlariga ba'zi bir universal takrorlanmaydigan prefiksni "qo'shib" elementlar va ularning atributlari uchun noyob nomlarni aniqlashimiz kerak. Buning uchun Ism maydonlari mexanizmi qo'llaniladi (Ism maydonlari 1999 yil yanvar oyida W3C tomonidan rasman tasdiqlangan va endi XML standartining bir qismidir). Ushbu spetsifikatsiyaga ko'ra, yorliqning "ko'lamini" aniqlash uchun (aslida an'anaviy dasturlash tillarida keng qo'llaniladigan ushbu atama XML-da qo'llanilmaydi, chunki bunday tuzilgan XML hujjat ichida "ko'lam" qurilishi mumkin bo'lgan to'plam mavjud emas) ) element nomini tavsiflovchi noyob atributni belgilash zarur, bu orqali hujjat analizatori qaysi nomlar guruhiga mansubligini aniqlay oladi (ikkala elementning noyob nomlarini va ularning atributlarini tavsiflash uchun nomlar maydoni identifikatorlaridan foydalanish mumkin). Bizning so'nggi misolimizda buni shunday qilish mumkin:

195.151.62.18

OLING

/ misc /

200

195.209.248.12

OLING

/soft.htm

200

Ism atributining o'ziga xosligi ba'zi Uniform Resurs identifikatorlaridan (masalan, URI yoki ISBN) uning qiymati sifatida foydalanilishini ta'minlaydi.

Ushbu standartda Namespace-dan foydalanish bo'yicha to'liq ma'lumotni topishingiz mumkin. Kelajakda misollarni soddalashtirish uchun biz nomlar maydonini - ta'riflarni o'tkazib yuboramiz.

Asboblar

XML hujjatlarini qayta ishlash

Bugungi kunda Internetda XML texnologiyasini rivojlantirishning asosiy cheklovchi omili - barcha brauzerlar ishlab chiqaruvchilari tomonidan ushbu formatni to'liq qo'llab-quvvatlamasligi - ko'pincha mijozlar tomonidan ishlatiladigan dasturlar. Ushbu vaziyatdan chiqish yo'li server tomoni XML hujjatlarini qayta ishlash bilan shug'ullanadigan variant bo'lishi mumkin.Har qanday mavjud XML tahlil qiluvchisidan foydalanib, siz allaqachon serverda kerakli ma'lumotlarni shakllantirishingiz va mijozga oddiy HTML hujjatni yuborishingiz mumkin. Biroq, bu usul, albatta, unchalik moslashuvchan emas va XML texnologiyasidan faqat tuzilgan ma'lumotni saqlash uchun foydalanishga imkon beradi, lekin uni mijoz tomonidan dinamik ravishda o'zgartirish uchun emas.

1997 yil avgust oyida RFC 2376 XML manbalari uchun MIME turlarini tasdiqladi: text / xml va application / xml. Shuning uchun XML hujjatlari HTTP orqali uzatilishi va oddiy HTML-sahifalar singari tomoshabin tomonidan ko'rsatilishi mumkin. Buning uchun veb-server konfiguratsiyasini biroz o'zgartirishingiz kerak (Apache-da - mime.types fayliga "text / xml xml ddt" qatorini qo'shing) va mijozlar tomonida uslublar jadvallarini yoki JavaScript-ni qo'llab-quvvatlaydigan brauzer mavjud. Bugungi kunda ushbu brauzerlarda Microsoft Internet Explorer 5, XML 1.0 spetsifikatsiyasi va XSL uslublar jadvallarini qo'llab-quvvatlovchi birinchi brauzer; konsortsium tomonidan sinov uchun maxsus (va) ishlab chiqilayotgan deyarli barcha W3C standartlarini qo'llab-quvvatlaydigan Amaya brauzeri. XML-ni qo'llab-quvvatlash Netscape Navigator-ning kelgusi versiyalari uchun ham rejalashtirilgan.

DOM hujjat ob'ekti modeli

XML hujjatlari tarkibiga kirish uchun eng kuchli interfeyslardan biri bu DOM.

XML hujjatlarining ob'ektiv modeli - bu aniqlangan ob'ektlar to'plami sifatida uning ichki tuzilishini aks ettirish. Qulaylik uchun ushbu ob'ektlar ba'zi bir daraxtga o'xshash ma'lumotlar tuzilmasida tartibga solingan - hujjatning har bir elementi alohida filialga va uning barcha tarkibiga ichki elementlar to'plami, izohlar, CDATA bo'limlari va boshqalar shaklida berilishi mumkin. ushbu tuzilishda subtradlar bilan ifodalanadi. Chunki har qanday yaxshi shakllangan XML hujjati, albatta, asosiy elementni belgilaydi, keyin barcha tarkibni ushbu asosiy elementning pastki daraxtlari deb hisoblash mumkin, bu holda hujjatlar daraxtining ildizi deyiladi. Quyidagi XML hujjati uchun:

matn matn

Hujjat tuzilmasining ob'ektsion ko'rinishi ishlab chiquvchilar uchun yangilik emas. Skriptlarda HTML-sahifa tarkibiga kirish uchun ob'ektga yo'naltirilgan yondashuv uzoq vaqtdan beri qo'llanilgan - Java Script yoki VBScript-da mavjud bo'lgan HTML-hujjat elementlari mos moslamalar yordamida yaratilishi, o'zgartirilishi va ko'rilishi mumkin edi. Ammo ularning ro'yxati va uslublar to'plami doimiy ravishda o'zgarib turadi va brauzer turiga va til versiyasiga bog'liq. Belgilangan dasturlash tili va hujjat turidan mustaqil ravishda tuzilgan hujjat tarkibiga kirish uchun interfeysni ta'minlash uchun W3 konsortsiumi DOM Level 1 ob'ekt modeli spetsifikatsiyasini ishlab chiqdi va rasmiy ravishda tasdiqladi.

DOM hujjat tarkibiga universal platforma va dasturiy ta'minotdan mustaqil ravishda kirish uchun spetsifikatsiya bo'lib, ularning protsessorlari uchun oddiygina API hisoblanadi. DOM har qanday HTML yoki XML hujjatining ob'ekt modelini yaratishning standart usuli bo'lib, uning yordamida kerakli bo'laklarni qidirish, uning elementlarini yaratish, o'chirish va o'zgartirish mumkin.

DOM spetsifikatsiyasida XML hujjatlari tarkibiga kirish interfeyslarini tavsiflash uchun platformadan mustaqil IDL tilidan foydalaniladi va ulardan foydalanish uchun ma'lum bir dasturlash tiliga "tarjima" qilish kerak. Biroq, analizatorlar yaratuvchilarining o'zi bu bilan shug'ullanadi, biz interfeyslarni amalga oshirish usuli haqida hech narsa bilmasligimiz mumkin - dastur ishlab chiquvchilari nuqtai nazaridan DOM ma'lum usul va xususiyatlarga ega bo'lgan ob'ektlar to'plamiga o'xshaydi. Keyingi bo'limda biz Java Script va VBScript skriptlarida mavjud bo'lgan Microsoft Internet Explorer 5 ob'ekt modelini tezda ko'rib chiqamiz.

XML (eXtensible Markup Language) - bu World Wide Web-da ma'lumotlarning ierarxik tuzilmalarini tavsiflash uchun SGML-ning soddalashtirilgan shevasi. U W3C ishchi guruhi tomonidan 1996 yildan beri ishlab chiqilgan; hozirda qabul qilingan tavsiya XML 1.0 ning ikkinchi nashri (2000 yil oktyabr) bo'lib, u keyingi muhokamalarga qaratilgan.

XML, shubhasiz, WWW-ning eng istiqbolli texnologiyalaridan biri bo'lib, unga ham rivojlanish korporatsiyalari, ham keng jamoatchilik tomonidan to'lanadigan foizlarni tushuntiradi. Uning tavsifiga o'tishdan oldin uning paydo bo'lishi va keyingi tez rivojlanish sabablarini muhokama qilish o'rinli ko'rinadi. Buning uchun biz yangi avlod veb-texnologiyalari yordamida hal qilinishi kerak bo'lgan WWW muammolarini ko'rib chiqishga harakat qilamiz.

HTML hujjatlar ma'nosini anglatmaydi. HTML tasvirlash uchun yaratilgan tuzilmalar hujjatlar (sarlavha, sarlavhalar, ro'yxatlar, paragraflar va boshqalar) va ma'lum darajada ularni boshqaradi displey (qalin, kursiv va boshqalar). Bu hech qanday ta'rif berish uchun mo'ljallanmagan ma'no unga yozilgan hujjatlar va ko'p hollarda bu hujjatning mohiyatini tashkil etuvchi ma'lumotlar, birja hisoboti yoki ilmiy nashr bo'ladimi. Shu sababli, ma'lumotlarni tavsiflash uchun tilga va ierarxik tuzilmalarda to'plangan ma'lumotlarga ehtiyoj bor. HTML noqulay va egiluvchan. So'nggi yillarda HTML tez-tez bir-birini takrorlaydigan va hujjat matniga aniqlik kiritmaydigan teglar aralashmasiga aylandi. Agar siz barcha brauzer ishlab chiqaruvchilari gunoh qiladigan nostandart HTML kengaytmalarini qo'shsangiz, u holda ozmi-ko'pmi murakkab HTML hujjatlarni yaratish jiddiy vazifaga aylanadi. Boshqa tomondan, bir martalik teglar to'plami ko'pincha kerakli tarkibni ifoda etadigan darajada moslashuvchan emas. Veb-brauzer tushunchasi juda cheklangan. Java dasturlari, stsenariy tillari va ActiveX boshqaruvlari paydo bo'lishi bilan veb-brauzerlar HTML hujjatlarini shunchaki "namoyish etish" ga aylanmaydilar; bugungi kunda ular ko'proq aniq dasturlarni ishga tushiradigan dasturlarga o'xshaydi. Biroq, brauzer tushunchasining o'zi foydalanuvchiga keraksiz cheklovlarni qo'yadi; ko'p hollarda biz kerak Internetga yo'naltirilgan dasturlar, ya'ni veb-saytlardan ixtisoslashgan ma'lumotlarni o'qiy oladigan va bizga tanish shaklda, masalan, elektron jadval shaklida beradigan dasturlar. Hujjatlarni qidirish juda ko'p havolalarni qaytaradi. Barchamiz doimo qidiruv tizimlaridan foydalanamiz va ularni noqulayliklari uchun doimo la'natlaymiz. Aytaylik, menga Internetda mavjud bo'lgan Sergey Dovlatovning barcha matnlari kerak. Muallifning ismini qidirishga urinish shu nomdagi barcha havolalar ro'yxatini, shu jumladan Dovlatovning xotiralari, uning kitoblariga sharhlar va boshqalarni keltirib chiqaradi. Maxsus yorliqdan foydalanish ancha qulayroq bo'lar edi. aniq nima qidirayotganimni ko'rsatish uchun. Tegishli manbalarni topib bo'lmadi. Keling, men Dovlatovning bir nechta to'plamlarini aniq topgan bir nechta hikoyalarini topdim deb taxmin qilaylik. Agar ular tarkibidagi havolani o'z ichiga olgan bo'lsa yaxshi, lekin ko'pincha bunday bo'lmaydi. Shuning uchun, ushbu sahifalar guruhi bitta manba ekanligini va shunga muvofiq ravishda ishlash kerakligini ko'rsatadigan usul kerak. Bu standartlashtirilgan va ishlab chiqilgan tizimni talab qiladi meta yozuvchilar Veb-sahifalar.

XML - bu o'zboshimchalik bilan tuzilgan ma'lumotlarni tavsiflovchi oddiy belgilash tilini yaratish orqali bu muammolarni hal qilishga urinish. Aniqrog'i, bu ma'lum bir tuzilishga oid ma'lumotlarni tavsiflovchi ixtisoslashgan tillar yoziladigan metall tildir. Bunday tillar deyiladi XML lug'atlari... HTML-dan farqli o'laroq, XML, XML hujjatida tasvirlangan ma'lumotlar qanday ko'rsatilishi kerakligini ko'rsatmaydi. Ma'lumotlarning turli xil qurilmalar uchun ko'rsatilish usuli XSL uslubini tavsiflash tili bilan belgilanadi, u HTML uchun CSS kabi XML uchun bir xil rol o'ynaydi. HTML-dan yana bir asosiy farq shundaki, XML-da XML lug'ati yaratuvchilari foydalanishni zarur deb hisoblagan har qanday teglar bo'lishi mumkin. Hozirda W3C ishchi guruhlari tomonidan rivojlanishning turli bosqichlarida bo'lgan XML asosidagi bir nechta ixtisoslashgan tillarning ro'yxati:

  • MathML - matematik formulalar tili;
  • SMIL - Multimedia integratsiyasi va sinxronlash tili;
  • SVG - ikki o'lchovli vektorli grafik til;
  • RDF - resurslarning meta-tavsiflash tili;
  • XHTML - bu HTMLni XML bo'yicha qayta tuzish.

XML hujjatini qayta ishlash jarayoni quyidagicha. Uning matni deb nomlangan maxsus dastur tomonidan tahlil qilinadi XML protsessori... XML protsessori hujjatdagi ma'lumotlar semantikasi haqida hech narsa bilmaydi; u faqat hujjat matnini tahlil qiladi va uni XML qoidalariga muvofiq tasdiqlaydi. Agar hujjat bo'lsa to'g'ri belgilangan (yaxshi shakllangan), keyin matnni tahlil qilish natijalari XML protsessori tomonidan ularni mazmunli qayta ishlashni amalga oshiradigan amaliy dasturga uzatiladi; agar hujjat noto'g'ri formatlangan bo'lsa, ya'ni unda sintaksis xatolari bo'lsa, u holda XML protsessori foydalanuvchini bu haqda xabardor qilishi kerak.

8.1.2. XML ilovalari

Savol tug'iladi: o'z tarkibidan mahrum bo'lgan "bo'sh til" dan foydalanishning nima keragi bor? Haqiqat shundaki, sodda ko'rinishiga qaramay, XML ma'lumotlarning to'g'riligini nazorat qilish uchun juda murakkab mexanizmlarga ega, hujjat ichidagi ierarxik munosabatlarni tekshirishga imkon beradi va eng muhimi, ushbu ma'lumotlarning tabiati qanday bo'lishidan qat'i nazar, ma'lumotlarni saqlash hujjatlari uchun yagona standartni o'rnatadi. Keling, XML-ning ba'zi bir ishlatilishini batafsil ko'rib chiqamiz.

An'anaviy ma'lumotlarni qayta ishlash Yuqoridagi imkoniyatlar XMLni boshqa zamonaviy texnologiyalar (xususan, Java texnologiyalari) bilan birgalikda har qanday mashinadan mustaqil dasturlarni yaratish uchun asos bo'lishi mumkin bo'lgan ma'lumotlarni saqlash va taqdim etish uchun platformadan mustaqil standart sifatida ko'rib chiqishga imkon beradi, shu jumladan ma'lumotlar almashinuvi uchun. server va mijoz o'rtasida. Bundan tashqari, bugungi kunda faol rivojlanayotgan XML-ga asoslangan so'rovlar tillari SQL tili bilan jiddiy raqobatlasha oladi. Hujjatlarga asoslangan dasturlash XML hujjatlari mavjud interfeyslar va komponentlardan dasturlarni yaratish uchun konteyner bo'lib xizmat qilishi mumkin. Bunday holda, hujjat foydalanuvchi interfeysi tarkibiy qismlariga va sahifada ekranda ko'rsatilishi bilan bir-biriga bog'langan ma'lumotlarni qayta ishlash modullariga havolalardan iborat. Arxivlash komponentlari Zamonaviy dasturlash tarkibiy qismlardan foydalanishga asoslangan bo'lib, ular ideal holda oddiy qo'shimcha kodlash yordamida osongina bir butunga yig'ilishi kerak. Buning asosi tarkibiy qismlarni arxivlashdir, bu esa o'z navbatida ularni saqlash va undan keyingi foydalanishda yagona yondashuvni talab qiladi. Yaqin kelajakda XML hujjatlari ikkilik modullar ko'rinishidagi komponentlarning umumiy saqlashiga muqobil bo'ladi, deb ishonish uchun barcha asoslar mavjud. Ma'lumotlarni kiritish XML ma'lumotlar tuzilishini aniqlaganimizdan so'ng, ushbu ma'lumotlarni qayta ishlaydigan kod ishlab chiqaruvchisini yozish juda oson. Bunday dasturiy vositalarni ishlab chiqish bilan barcha muntazam ma'lumotlarni qayta ishlash (shu jumladan, ularning to'g'riligini tekshirish, ularni to'g'ri formatda taqdim etish va hk) avtomatlashtirilishi mumkin, bu ishlab chiqaruvchilarga yaratilayotgan mahsulotning nostandart qismlariga e'tibor qaratishlariga imkon beradi.

8.1.3. XML hujjat tarkibi

XML hujjati deklaratsiyalar, elementlar, izohlar, maxsus belgilar va direktivalardan iborat. Hujjatning ushbu qismlari ushbu bobda tavsiflangan.

8.1.3.1. Elementlar va atributlar

XML bu yorliq tili hujjatlarni belgilash. Boshqacha qilib aytganda, har qanday XML hujjati to'plamdir elementlarva har bir elementning boshi va oxiri maxsus belgilar bilan ko'rsatilgan teglar.

Element uch qismdan iborat: boshlang'ich yorlig'i, tarkib va \u200b\u200byakuniy yorliq. Teg - bu burchakli qavs ichiga olingan matn "<" и ">". Yakuniy yorliq boshlang'ich yorlig'i bilan bir xil nomga ega, lekin oldinga siljish bilan boshlanadi" / ". XML elementining misoli:

Sergey Dovlatov

Element nomlari katta-kichikligi, ya'ni. , va Turli xil elementlarning nomlari. Yakuniy yorliq har doim talab qilinadi. Agar teg bo'lsa bo'sh, ya'ni tarkib va \u200b\u200byopilish yorlig'i yo'q, keyin u maxsus shaklga ega:

<элемент/>

Har qanday element bo'lishi mumkin atributlarbuyum haqida qo'shimcha ma'lumotlarni o'z ichiga olgan. Atributlar har doim elementning boshlang'ich yorlig'iga qo'shiladi va quyidagicha ko'rinadi:

Attribute_name \u003d "attribute_value"

Atribut bir qiymatga ega bo'lishi kerak, u har doim bitta yoki ikkita tirnoq ichida bo'lishi kerak. Atribut nomlari ham katta-kichik harflar uchun sezgir. Atributga ega bo'lgan elementga misol:

Sergey Dovlatov

Elementlar bir-birini ta'qib qilishi yoki bir-biriga joylashtirilgan bo'lishi kerak:

Nutqning bir qismi Brodskiy, Jozef Yolg'izlik mart Dovlatov, Sergey

Bu erda kitoblar elementi ikkita ichki element elementlarini o'z ichiga oladi, ular o'z navbatida isbn xususiyatiga ega va uchta ketma-ket elementlarni o'z ichiga oladi: sarlavha (sarlavha), muallif (muallif) va hozirgi (hozirgi), ikkinchisi bo'sh. , chunki bu holda bu mantiqiy bayroqqa mos keladi.

Yuqoridagi tavsifdan siz XML sintaksisining HTML sintaksisiga o'xshashligini ko'rishingiz mumkin (bu tabiiy, chunki ularning ikkalasi ham bir xil SGML tilining shevalari), ammo to'g'ri XML hujjatlarini formatlash uchun talablar yuqoriroq. XML va HTML o'rtasidagi yana bir juda muhim farq shundaki, elementlarning tarkibi, ya'ni start va end teglari o'rtasidagi har qanday narsa ma'lumotlar hisoblanadi. Bu shuni anglatadiki, XML HTML kabi bo'sh joy va qator tanaffuslarini e'tiborsiz qoldirmaydi.

8.1.3.2. Prolog va direktivalar

Har qanday XML hujjati quyidagilardan iborat prolog va ildiz elementimasalan:

Yolg'izlik mart Dovlatov, Sergey

Ushbu misolda prolog bitta bo'lib qisqartirilgan direktiv (hujjatning birinchi satri) XML versiyasini ko'rsatuvchi. Undan keyin barcha boshqa elementlarni o'z ichiga olgan va root deb nomlangan noyob nomlangan XML elementi keladi. Qayta ishlash bo'yicha ko'rsatma - bu maxsus teglarga kiritilgan ibora "", unda XML hujjatini qayta ishlaydigan dasturga ko'rsatmalar mavjud.

XML standarti faqat bitta yo'riqnomani o'zida saqlab qoladi ushbu hujjat mos keladigan XML versiyasini belgilash (hali ikkinchi XML versiyasi yo'q). Aslida, ushbu ko'rsatma biroz boyroq va eng umumiy ko'rinishida quyidagicha ko'rinadi:

Bu erda kodlash atributi hujjatning belgilar kodlashini belgilaydi. Odatiy bo'lib, XML hujjatlari UTF-8 yoki UTF-16 formatida yaratilgan deb hisoblanadi. Agar boshqa biron bir belgi kodlash ishlatilgan bo'lsa, unda A7.1-jadvalga muvofiq uning nomi ushbu atributda ko'rsatilishi kerak, misolda ko'rsatilgandek. Mustaqil atribut hujjat tarkibida mavjudligini bildiradi. Ha qiymati bu kabi bo'limlar yo'qligini anglatadi, yo'q qiymati ular mavjudligini anglatadi.

8.1.3.3. Izohlar

XML hujjatlari o'z ichiga olishi mumkin izohlarhujjatni ko'rib chiqayotgan dastur tomonidan e'tiborsiz qoldirilgan. Sharhlar HTML-dagi kabi qoidalar asosida tuzilgan:

  • sharhni belgilar bilan boshlang "",
  • izoh ichida "-" belgilaridan foydalanmang.

Misol sharhlar:

8.1.3.4. Ismlar va ma'lumotlar

Hammasi ismlar Elementlar, atributlar va bo'limlar Unicode harfi bilan boshlanishi va harflar, raqamlar, nuqta (.), Pastki chiziq (_) va defis (-) belgilaridan iborat bo'lishi kerak. Faqatgina cheklov shundaki, ular har qanday holatda xml harflarining kombinatsiyasidan boshlamasliklari kerak; bunday nomlar kelajakdagi til kengaytmalari uchun saqlanadi. Ushbu standart nafaqat inglizcha harflardan, balki boshqa nomlardan ham foydalanishga imkon berishi juda muhimdir, garchi mavjud XML protsessorlari ko'pincha yaratuvchilar tomonidan o'rnatilgan kodlash tizimlari bilan chegaralanadi. Shuning uchun, bizning misollarimizda biz ingliz tilida ismlarni yozamiz.

Ma'lumotlarya'ni element tarkibi va atribut qiymatlari keyingi bobda ko'rsatilganlardan boshqa har qanday belgilar bo'lishi mumkin.

8.1.3.5. Maxsus belgilar

XML-dagi bir qator belgilar zaxiralangan va ularni maxsus tarzda ko'rsatish kerak:

Ixtiyoriy ravishda siz raqamli belgilar kodlashidan Unicode standartida foydalanishingiz mumkin. Bunday holda, belgini o'nlik kodi bilan belgilash mumkin ( kod; ) yoki o'n oltinchi kod ( kod; ). masalan © mualliflik huquqi belgisini aks ettiradi © va VA - ruscha xat VA... Keyinchalik ko'rib turganimizdek, bunday tuzilmalarni ishlatishda XML HTML-dan ancha boy, chunki u har qanday ramziy ifodani hujjatlar matniga almashtirishga imkon beradi.

8.1.3.6. CDATA bo'limlari

XML elementlari tarkibiga yaroqsiz belgilarni kiritishning yana bir usuli bu so'zda ishlatishdir. cDATA bo'limlari (Character DATA, ya'ni belgilar ma'lumotlari uchun qisqartma). Aytaylik, biz maket elementi tarkibini HTML matnining bir qismiga aylantirmoqchimiz, masalan:

Sarlavha

Ushbu qurilish noto'g'ri, chunki HTML H1 yorlig'i bu holda XML yorlig'i sifatida ko'rib chiqiladi. Tarkib elementining barcha tarkibi ma'lumotlar sifatida ko'rib chiqilishi uchun biz uni CDATA bo'limiga o'rashimiz kerak:

Ushbu misoldan ko'rinib turibdiki, CDATA bo'limi ajratuvchilarga kiritilgan... Ushbu bo'lim ichidagi hamma narsa belgilar ma'lumotlari deb hisoblanadi; xususan, CDATA bo'limlari bir-biriga joylashtirilishi mumkin emas.

8.1.4. Bo'limlar va ularning deklaratsiyalari

8.1.4.1. XML hujjatining bo'limlari

Jismoniy jihatdan XML hujjati bir nechtadan iborat bo'lishi mumkin bo'limlar (shaxslar). Bunday holda, hujjatning ildiz elementi, shuningdek, bo'lim deb ataladi hujjatning bo'limi, garchi u hech qanday tarzda maxsus bezatilmagan bo'lsa. Barcha bo'limlar tarkibga ega; ularning barchasi, hujjatlar bo'limi va tashqi DTDdan tashqari, ismga ega.

Hujjatni tahlil qilish nuqtai nazaridan bo'limlar tahlil qilingan va ajratilmaganlarga bo'linadi. Ajratilmagan bo'lim (ajratilmagan shaxs) - bu XML protsessori tomonidan tarkibini tashqi ma'lumotlar sifatida ko'rib chiqmasdan (masalan, XML hujjati bo'lmagan matn) sifatida ko'rib chiqiladigan manba. Taqsimlanmagan bo'limlar doimo mavjud yozuvularning formatini ko'rsatib. Tahlil qilingan bo'limlar (ajratilgan ob'ektlar) matnni almashtirish uchun mo'ljallangan: har doim XML protsessori hujjatda bunday bo'lim nomiga duch kelganda, uni ushbu bo'limning mazmuni bilan almashtiradi.

8.1.4.2. Ichki bo'limlar

Bo'lim deklaratsiyalari ichki va tashqi deb tasniflanadi. Ichki bo'lim deklaratsiyasi shunga o'xshash:

U ob'ekt tarkibini (parametr qiymati) o'z ichiga oladi va ushbu qiymatni bo'lim nomi bilan almashtirish uchun ishlatiladi. Masalan, biz atributni tanishtira olamiz janr va janrni o'rnatish uchun ichki bo'limlardan foydalaning:

]> Nutqning bir qismi Brodskiy, Jozef Yolg'izlik mart Dovlatov, Sergey

Ushbu misol shuni ko'rsatadiki bo'limga havola (shaxs ma'lumotnomasi) aynan maxsus belgilar ma'lumotnomasiga o'xshaydi, ya'ni & name; ... Aslida, maxsus belgilar aynan bir xil ma'lumotnomalardir, ammo tegishli bo'limlar ichki XML deklaratsiyasida bevosita ko'rsatiladi. Bunday matn almashtirishlar hujjat hajmini qisqartiradigan qisqartirishlarni ko'rsatish va tez-tez o'zgartiriladigan hujjatlar maydonlari uchun belgilarni kiritish uchun qulaydir. Masalan, biz nashrning navbatdagi tahrirlangan sanasini ichki bo'limga o'tkazib, keyin faqat ushbu bo'limning qiymatini o'zgartira olamiz.

8.1.4.3. Tashqi bo'limlar

Ikkita variant mavjud tashqi bo'lim deklaratsiyalari:

Birinchi variant deyiladi tizim bo'limi, ikkinchisi - ommaviy bo'lim... Ularning ikkalasi ham bo'lim nomini URI tomonidan belgilangan tashqi manbaga bog'laydi, u kodlangan va o'z ichiga olmaydi. Tashqi resurs URI chaqiriladi tizim bo'limi identifikatori... Tashqi manbadan foydalanish bir necha omillarga bog'liq:

  • Agar deklaratsiyada bo'lim yozuvini ko'rsatuvchi NDATA parametri bo'lsa, u holda bo'lim taqsimlanmagan.
  • Agar NDATA parametri ko'rsatilmagan bo'lsa, unda bo'lim tahlil qilinadi va tegishli resurs XML hujjati bo'lishi kerak. Bu shuni anglatadiki, bo'limga murojaat qilish o'rniga, tegishli manbaning matni hujjat matniga kiritiladi.
  • Umumiy bo'limda satr belgilanishi mumkin umumiy bo'lim identifikatori... XML protsessori ushbu identifikatordan ushbu bo'lim uchun muqobil URI yaratish uchun foydalanishi mumkin. Agar u bajarilmasa, u bo'limning tarkibini yuklash uchun tizim identifikatoridan foydalanishi kerak.

Tashqi resurs deklaratsiyasining namunalari:

Tashqi tahlil qilingan qism ko'rsatma bilan boshlanishi kerak, unda versiya raqami bo'lmasligi kerak, lekin belgi kodlashi kerak. Ushbu ko'rsatma ichki matnning bir qismi emas.

8.1.5. Hujjat turi deklaratsiyasi

XML hujjat turi deklaratsiyasi (hujjat turi deklaratsiyasi) o'z ichiga oladi hujjat turini aniqlash (hujjat turini aniqlash, DTD) yoki unga ishora qiladi. DTD - bu ma'lum bir hujjatlar sinfining sintaksisini tavsiflovchi maxsus grammatika; DTDlarni yaratish qoidalari Ch. 8.2. U faqat DTD ga kirishni ta'minlaydigan deklaratsiyalarni tavsiflaydi. Hujjat turi deklaratsiyasi, xuddi bo'lim deklaratsiyasi singari, ichki yoki tashqi bo'lishi mumkin. Ichki deklaratsiya quyidagicha ko'rinadi:

tashqi tomoni esa tashqi bo'limlar bilan bir xil ikkita variantga ega:

Shunday qilib, hujjat turi deklaratsiyasi va bo'lim deklaratsiyasi o'rtasidagi farq faqatgina:

  • bu kalit so'z bilan boshlanadi! DOCTYPE emas, balki! ENTITY;
  • u to'rtburchak qavs ichiga olingan korpusga ega bo'lishi mumkin.

Bunday deklaratsiyaning nomi u tasvirlaydigan ildiz elementi nomiga mos kelishi kerak va tanasi DTD qurilish qoidalariga rioya qilishi kerak va Ch. 8.2. Hozircha u bo'lim deklaratsiyalarini o'z ichiga olishi mumkinligini unutmang. Ichki deklaratsiyaning namunasi keltirilgan. Tashqi deklaratsiyalarga misollar:

E'tibor bering, tashqi hujjat turi deklaratsiyasida DTD deb nomlangan ma'lumot ham bo'lishi mumkin tashqi pastki qism DTD va tashqi DTD ga qo'shimchalarni tavsiflovchi tanasi (deyiladi ichki qism DTD).

8.1.6. XML hujjat namunasi

Yuqorida tavsiflangan barcha tushunchalarni yaxlit holda to'plash uchun bu erda kitob do'konlari narxlari ro'yxatini o'z ichiga olgan to'liq XML hujjatiga misol keltirilgan.

]> Halokatli mart Sergey Dovlatov 60.00 Nutqning bir qismi Jozef Brodskiy 55.00 Antigon Sofokl 103.50

Bilasizmi, "Fizik vakuum" tushunchasining yolg'onligi nimada?

Jismoniy vakuum - relyativistik kvant fizikasi tushunchasi, u erda kvantlangan maydonning eng past (asosiy) energiya holati deb tushuniladi, bu nol impuls, burchak impulsi va boshqa kvant sonlariga ega. Relativistik nazariyotchilar fizik vakuumni o'lchovsiz va shuning uchun faqat xayoliy maydon bilan to'ldirilgan materiyadan butunlay mahrum bo'lgan bo'shliq deb atashadi. Bu holat, relyativistlarning fikriga ko'ra, mutlaq bo'shliq emas, balki ba'zi fantom (virtual) zarralar bilan to'ldirilgan bo'shliqdir. Relativistik kvant maydon nazariyasi Geyzenberg noaniqlik printsipiga muvofiq virtual, ya'ni aniq (kimga?), Zarralar doimo tug'ilib, fizik vakuumda yo'q bo'lib ketadi: deb ataladigan maydon tebranishlari paydo bo'ladi. Ta'rifga ko'ra, fizik vakuumning virtual zarralari va shuning uchun o'zi mos yozuvlar tizimiga ega emas, chunki aks holda nisbiylik nazariyasi asos bo'lgan Eynshteynning nisbiylik printsipi buzilgan bo'lar edi (ya'ni fizik vakuum zarralaridan havola qilingan mutlaq o'lchov tizimi mumkin edi, bu esa, o'z navbatida, SRT qurilgan nisbiylik printsipini aniq rad etadi). Shunday qilib, fizik vakuum va uning zarralari jismoniy olamning elementlari emas, balki faqat nisbiylik nazariyasining real dunyoda emas, balki faqat relyativistik formulalarda mavjud bo'lgan, sababiylik printsipini buzadigan (sababsiz paydo bo'ladi va yo'q bo'lib ketadi) ob'ektivlik printsipi (virtual zarralar). nazariyotchining xohishiga qarab, mavjud yoki mavjud emasligiga qarab, haqiqiy o'lchovlilik printsipi (kuzatilmaydi, o'z IRSlariga ega emas) qarab chiqilishi mumkin.

U yoki bu fizik "fizikaviy vakuum" tushunchasini qo'llaganida, u yoki ushbu atamaning bema'niligini tushunmaydi, yoki relyativistik mafkuraning yashirin yoki aniq tarafdori bo'lib, bir-biriga mos kelmaydi.

Ushbu tushunchaning bema'niligini tushunishning eng oson usuli bu uning kelib chiqish manbalariga murojaat qilishdir. U 30-yillarda Pol Dirak tomonidan tug'ildi, chunki buyuk matematik, ammo vasat fizik singari efirni sof shaklda inkor etish endi mumkin emas edi. Juda ko'p faktlar bunga zid keladi.

Relyativizmni himoya qilish uchun Pol Dirak salbiy energiyaning fizikaviy va mantiqsiz tushunchasini, so'ngra vakuumda bir-birini kompensatsiya qiluvchi ikkita energiya "dengizining" mavjudligini - ijobiy va manfiy, shuningdek zarrachalarning bir-birini kompensatsiyalovchi "dengizini" - virtual (ya'ni, ko'rinadigan) elektronlarni va vakuumdagi pozitronlar.

Maqola sizga yoqdimi? Do'stlar bilan bo'lishish uchun: