JavaRush /Java blogi /Random-UZ /Java dasturchi uchun XML asoslari. 2/3 qism
Ярослав
Daraja
Днепр

Java dasturchi uchun XML asoslari. 2/3 qism

Guruhda nashr etilgan

Kirish

Salom, mening maqolamning aziz o'quvchilari. Bu XML haqidagi seriyadagi ikkinchi maqola va ushbu maqola XML nom maydoni va XML sxemasi haqida gapiradi.
XML asoslari
Yaqinda men o'zim bu haqda hech narsa bilmasdim, lekin men juda ko'p materiallarni o'zlashtirdim va bu ikki muhim mavzuni oddiy so'zlar bilan tushuntirishga harakat qilaman. Darhol aytmoqchimanki, sxemalar XML hujjatlarini tekshirishning juda ilg'or mexanizmi va DTD-larga qaraganda ancha funktsionaldir, shuning uchun bu erda ularni to'liq o'rganish bo'lmaydi. Qani boshladik :)

XML nom maydoni

Nomlar maydoni "ism maydoni" degan ma'noni anglatadi, ammo bu maqolada men ko'pincha ruscha iborani oddiy nom maydoni bilan almashtiraman, chunki u qisqaroq va tushunish osonroq. XML Namespace - bu texnologiya bo'lib, uning asosiy maqsadi XML faylida barcha elementlarning yagona ekanligiga ishonch hosil qilish va hech qanday chalkashlik yo'qligiga ishonch hosil qilishdir. Va bu Java kurslari bo'lgani uchun, xuddi shu texnologiya Java paketlarida ham mavjud. Agar biz bir xil nomdagi ikkita sinfni yonma-yon qo'yib, ulardan foydalana olsak, qaysi sinf kerakligini qanday aniqlagan bo'lardik? Bu muammoni paketlar hal qiladi - biz shunchaki sinflarni turli paketlarga joylashtirishimiz va ularni u yerdan import qilishimiz, kerakli paketning aniq nomini va unga boradigan yo'lni ko'rsatishimiz yoki shunchaki kerakli sinfga to'liq yo'lni ko'rsatishimiz mumkin. Java dasturchi uchun XML asoslari.  3-1 qismdan 2-qismEndi biz buni qila olamiz:
public class ExampleInvocation {
    public static void main(String[] args) {
        // Creation экземпляра класса из первого пакета.
        example_package_1.Example example1 = new example_package_1.Example();

        // Creation экземпляра класса из второго пакета.
        example_package_2.Example example2 = new example_package_2.Example();

        // Creation экземпляра класса из третьего пакета.
        example_package_3.Example example3 = new example_package_3.Example();
    }
}
XML Namespace-da hamma narsa deyarli bir xil, bir oz boshqacha. Mohiyat bir xil: agar elementlar bir xil bo'lsa (sinflar kabi), biz ularni turli nomlar maydonida ishlatishimiz kerak (paketlarni ko'rsating), u holda elementlarning (sinflarning) nomlari mos kela boshlasa ham, biz baribir ma'lum bir elementga bo'sh joydan kirish (paket). Masalan: bizda XML-da ikkita element mavjud - bashorat qilish (oracle) va Oracle ma'lumotlar bazasi.
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <oracle>
        <connection value="jdbc:oracle:thin:@10.220.140.48:1521:test1" />
        <user value="root" />
        <password value="111" />
    </oracle>

    <oracle>
        Сегодня вы будете заняты весь день.
    </oracle>
</root>
Va biz ushbu XML faylini qayta ishlaganimizda, agar ma'lumotlar bazasi o'rniga biz bashorat olsak, biz jiddiy chalkashib ketamiz. Elementlarning to'qnashuvini hal qilish uchun biz ularni farqlash uchun ularning har biriga o'z maydonini ajratishimiz mumkin. Buning uchun maxsus atribut mavjud - xmlns:prefix= "nomlar maydoni uchun noyob qiymat". Keyin elementlarga bu nomlar maydonining bir qismi ekanligini ko'rsatish uchun old qo'yishimiz mumkin (asosan, biz paketlar yo'lini - nomlar maydonini yaratishimiz kerak, so'ngra har bir elementga qaysi paketga tegishli ekanligini oldindan belgilashimiz kerak).
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <database:oracle xmlns:database="Unique ID #1">
        <connection value="jdbc:oracle:thin:@10.220.140.48:1521:test1" />
        <user value="root" />
        <password value="111" />
    </database:oracle>

    <oracle:oracle xmlns:oracle="Unique ID #2">
        Сегодня вы будете заняты весь день.
    </oracle:oracle>
</root>
Ushbu misolda biz ikkita nom maydonini e'lon qildik: ma'lumotlar bazasi va oracle. Endi siz elementlardan oldin nom maydoni prefikslaridan foydalanishingiz mumkin. Agar hozir biror narsa tushunarsiz bo'lsa, qo'rqishning hojati yo'q. Aslida, bu juda oddiy. Avvaliga maqolaning ushbu qismini tezroq yozmoqchi edim, lekin chorshanba kunidan keyin men bu mavzuga ko'proq e'tibor qaratishim kerak, deb qaror qildim, chunki chalkashib ketish yoki biror narsani tushunmaslik oson. Endi xmlns atributiga katta e'tibor beriladi. Shunday qilib, yana bir misol:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="https://www.standart-namespace.com/" xmlns:gun="https://www.gun-shop.com/" xmlns:fish="https://www.fish-shop.com/">
    <gun:shop>
        <gun:guns>
            <gun:gun name="Revolver" price="1250$" max_ammo="7" />
            <gun:gun name="M4A1" price="3250$" max_ammo="30" />
            <gun:gun name="9mm Pistol" price="450$" max_ammo="12" />
        </gun:guns>
    </gun:shop>

    <fish:shop>
        <fish:fishes>
            <fish:fish name="Shark" price="1000$" />
            <fish:fish name="Tuna" price="5$" />
            <fish:fish name="Capelin" price="1$" />
        </fish:fishes>
    </fish:shop>
</root>
Noyob elementlarni va baliq ovlash uchun baliqlarni noyob elementlarni saqlash uchun bo'shliqlar qurolidan foydalangan holda oddiy XMLni ko'rishingiz mumkin. Bo'shliqlarni yaratish orqali biz bir do'kon elementidan bir vaqtning o'zida ikki xil narsa - qurol do'koni va baliq do'koni uchun foydalanganmiz va biz bo'shliqlarni e'lon qilganimiz tufayli bu qanday do'kon ekanligini aniq bilamiz. Eng qiziqarli narsa sxemalarda boshlanadi, qachonki biz shu tarzda bir xil elementlarga ega bo'lgan turli tuzilmalarni tasdiqlay olamiz. xmlns nom maydonini e'lon qilish uchun atribut bo'lib, uni istalgan elementda ko'rsatish mumkin. Nom maydoni deklaratsiyasiga misol:
xmlns:shop= «https://barber-shop.com/»
Yo'g'on nuqtadan keyin prefiks - bu bo'sh joy havolasi bo'lib, undan keyin elementlardan oldin ular shu bo'shliqdan kelganligini ko'rsatish uchun ishlatilishi mumkin. xmlns qiymati UNIQUE STRING bo'lishi kerak. Buni tushunish juda muhim: nom maydonini e'lon qilish uchun veb-sayt havolalari yoki URI-lardan foydalanish juda keng tarqalgan. Bu qoida standartdir, chunki havolaning URI yoki URL manzili noyobdir, LEKIN bu erda u juda chalkash bo'ladi. Esingizda bo'lsin: qiymat siz xohlagan xar qanday satr bo'lishi mumkin, lekin uning noyob va standart ekanligiga ishonch hosil qilish uchun siz URL yoki URI dan foydalanishingiz kerak. Har qanday satrlardan foydalanishingiz mumkinligi Oracle misolida ko'rsatilgan:
xmlns:oracle="Unique ID #2"
xmlns:database="Unique ID #1"
Nom maydonini e'lon qilganingizda, uni elementning o'zida va undagi barcha elementlarda ishlatishingiz mumkin, shuning uchun ildiz elementida e'lon qilingan nomlar maydoni barcha elementlarda ishlatilishi mumkin. Buni oxirgi misolda ko'rish mumkin va bu erda aniqroq misol:
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <el1:element1 xmlns:el1="Element#1 Unique String">
        <el1:innerElement>

        </el1:innerElement>
    </el1:element1>


    <el2:element2 xmlns:el2="Element#2 Unique String">
        <el2:innerElement>

        </el2:innerElement>
    </el2:element2>


    <el3:element3 xmlns:el3="Element#3 Unique String">
        <el3:innerElement>
            <el1:innerInnerElement> <!-- Так нельзя, потому что пространство el1 объявлено только в первом элементе, потому может использовать только внутри первого element и его внутренних элементов. -->

            </el1:innerInnerElement>
        </el3:innerElement>
    </el3:element3>
</root>
Bu erda muhim tafsilot: ildiz elementida standart nom maydoni ham mavjud. Agar siz boshqa nom maydonlarini e'lon qilsangiz, siz standartni bekor qilasiz va undan foydalana olmaysiz. Keyin ildiz elementi oldiga avval e'lon qilgan har qanday bo'sh joy prefiksini qo'yishingiz kerak. Biroq, bu ham aldanishi mumkin: siz standart bo'shliqni aniq e'lon qilishingiz mumkin. Xmlns dan keyin prefiksni ishlatmaslik, balki darhol biron bir qiymatni yozish kifoya va prefikssiz barcha elementlaringiz ushbu nom maydoniga tegishli bo'ladi. Oxirgi misol buni ishlatgan:
<root xmlns="https://www.standart-namespace.com/" xmlns:gun="https://www.gun-shop.com/" xmlns:fish="https://www.fish-shop.com/">
Biz qurol yoki baliqdan foydalanish zaruratini oldini olish uchun standart bo'shliqni aniq e'lon qildik, chunki ildiz elementi baliq ovlash do'konining yoki qurolning ob'ekti emas, shuning uchun ikkala bo'sh joydan foydalanish mantiqan noto'g'ri bo'ladi. Keyingi: agar siz xmlns:a va xmlns:b ni yaratgan bo'lsangiz, lekin ular bir xil qiymatga ega bo'lsa, bu bir xil bo'shliq va ular noyob emas. Shuning uchun siz doimo noyob qiymatlardan foydalanishingiz kerak, chunki bu qoidani buzish juda ko'p xatolarni keltirib chiqarishi mumkin. Misol uchun, agar bizda shunday e'lon qilingan bo'shliqlar bo'lsa:
xmlns="https://www.standart-namespace.com/" xmlns:gun="https://www.gun-shop.com/" xmlns:fish="https://www.gun-shop.com/"
Keyin bizning baliq ovlash do'konimiz qurol do'koniga aylanadi va prefiks hali ham baliq do'koniga aylanadi. Bularning barchasi bo'shliqlarning asosiy nuqtalari. Men ularning barchasini to'plash va qisqartirish va keyin ularni aniq ifodalash uchun juda ko'p vaqt sarfladim, chunki Internetdagi bo'shliqlar haqidagi ma'lumotlar juda katta va ko'pincha suvdir, shuning uchun bu erda hamma narsa - men buni o'zim sinov orqali o'rgandim. va xato. Agar sizda hali ham savollar bo'lsa, maqolaning oxiridagi havolalar yordamida materiallarni o'qishga harakat qilishingiz mumkin.

XML sxemasi

Darhol aytmoqchimanki, ushbu maqola faqat aysbergning uchi bo'ladi, chunki mavzu juda keng. Agar siz sxemalar bilan batafsilroq tanishmoqchi bo'lsangiz va ularni har qanday murakkablikdagi o'zingiz yozishni o'rganmoqchi bo'lsangiz, maqolaning oxirida hamma narsa har xil turlar, cheklovlar, kengaytmalar va boshqalar haqida bo'ladigan havola bo'ladi. Men nazariyadan boshlamoqchiman. Sxemalar .xsd (xml sxema ta'rifi) formatiga ega bo'lib, DTDlarga yanada rivojlangan va ommabop muqobil hisoblanadi: ular shuningdek elementlarni yaratishi, ularni tavsiflashi va hokazo. Biroq, ko'plab bonuslar qo'shildi: turdagi tekshirish, nomlar maydonini qo'llab-quvvatlash va kengroq funksionallik. Esingizda bo'lsin, biz DTD haqida gapirganimizda, u bo'shliqlarni qo'llab-quvvatlamaydi degan minus bor edi? Endi biz buni o'rganib chiqdik, men tushuntiraman: agar DTD dan ikki yoki undan ortiq sxemalarni import qilish mumkin bo'lsa, unda bir xil elementlar mavjud bo'lsa, bizda to'qnashuvlar (tasodiflar) bo'lar edi va ulardan umuman foydalana olmas edik, chunki bizga qaysi element kerakligi aniq emas. XSD bu muammoni hal qiladi, chunki siz sxemalarni ma'lum bir joyga import qilishingiz va undan foydalanishingiz mumkin. Aslida, har bir XSD sxemasi maqsadli bo'shliqqa ega, ya'ni sxema qaysi bo'shliqda XML faylida yozilishi kerak. Shunday qilib, XML faylining o'zida biz shunchaki sxemalarda oldindan belgilangan ushbu bo'shliqlarni yaratishimiz va ularga prefikslarni belgilashimiz kerak, so'ngra ularning har biriga kerakli sxemalarni ulashimiz kerak, shundan so'ng biz sxemadagi elementlardan prefikslarni almashtirib xavfsiz foydalanishimiz mumkin. biz sxemalarni import qilgan joy. Shunday qilib, bizda bir misol bor:
<?xml version="1.0" encoding="UTF-8"?>
<house>
    <address>ул. Есенина, дом №5</address>
    <owner name="Ivan">
        <telephone>+38-094-521-77-35</telephone>
    </owner>
</house>
Biz uni sxema bilan tasdiqlamoqchimiz. Birinchidan, bizga sxema kerak:
<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="https://www.nedvigimost.com/">
    <element name="house">
        <complexType>
            <sequence>
                <element name="address" type="string" maxOccurs="unbounded" minOccurs="0" />
                <element name="owner" maxOccurs="unbounded" minOccurs="0" >
                    <complexType>
                        <sequence>
                            <element name="telephone" type="string" />
                        </sequence>
                        <attribute name="name" type="string" use="required"/>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>
Ko'rib turganingizdek, sxemalar ham XML fayllardir. Siz to'g'ridan-to'g'ri XMLda kerakli narsani yozasiz. Ushbu sxema yuqoridagi misoldan XML faylini tekshirishga qodir. Masalan: agar egasining ismi bo'lmasa, sxema buni ko'radi. Bundan tashqari, ketma-ketlik elementi tufayli, manzil har doim birinchi bo'lib, keyin esa uy egasi bo'lishi kerak. Oddiy va murakkab elementlar mavjud. Oddiy elementlar faqat ma'lum turdagi ma'lumotlarni saqlaydigan elementlardir. Misol:
<element name="telephone" type="string" />
Biz satrni saqlaydigan elementni shunday e'lon qilamiz. Ushbu element ichida boshqa elementlar bo'lmasligi kerak. Bundan tashqari, murakkab elementlar mavjud. Murakkab elementlar o'z ichida boshqa elementlar va atributlarni saqlashga qodir. Keyin turni ko'rsatishingiz shart emas, faqat element ichida murakkab tur yozishni boshlang.
<complexType>
    <sequence>
        <element name="address" type="string" maxOccurs="unbounded" minOccurs="0" />
        <element name="owner" maxOccurs="unbounded" minOccurs="0" >
            <complexType>
                <sequence>
                    <element name="telephone" type="string" />
                </sequence>
                <attribute name="name" type="string" use="required"/>
            </complexType>
        </element>
    </sequence>
</complexType>
Buni boshqacha qilish ham mumkin edi: siz murakkab turni alohida yaratishingiz va keyin uni turga almashtirishingiz mumkin edi. Faqatgina ushbu misolni yozishda, negadir bo'sh joyni qandaydir prefiks ostida e'lon qilish kerak edi va standartni ishlatmaslik kerak edi. Umuman olganda, bu shunday bo'ldi:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="https://www.nedvigimost.com/">
    <xs:element name="house" type="content" />

    <xs:complexType name="content">
        <xs:sequence>
            <xs:element name="address" type="xs:string" maxOccurs="unbounded" minOccurs="0" />
            <xs:element name="owner" maxOccurs="unbounded" minOccurs="0" >
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="telephone" type="xs:string" />
                    </xs:sequence>
                    <xs:attribute name="name" type="xs:string" use="required"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>
Shunday qilib, biz o'z turlarimizni alohida yaratishimiz va keyin ularni type atributining biror joyiga almashtirishimiz mumkin. Bu juda qulay, chunki u turli joylarda bir turdan foydalanishga imkon beradi. Men ulanish sxemalari haqida ko'proq gaplashmoqchiman va shu erda tugatmoqchiman. Sxemani ulashning ikki yo'li mavjud: ma'lum bir joyga va shunchaki ulang.

Devrenni ulashning birinchi usuli

Birinchi usul kontaktlarning zanglashiga olib, ma'lum bir maqsadli bo'shliqqa ega ekanligini nazarda tutadi. U sxema elementidagi targetNamespace atributi yordamida aniqlanadi. Keyin XML faylida BU SHU bo'sh joyni yaratish kifoya va u erda sxemani "yuklang":
<?xml version="1.0" encoding="UTF-8"?>
<nedvig:house xmlns:nedvig="https://www.nedvigimost.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.nedvigimost.com/ example_schema1.xsd">
    <address>ул. Есенина, дом №5</address>
    <owner name="Ivan">
        <telephone>+38-094-521-77-35</telephone>
    </owner>
</nedvig:house>
Ikki qatorni tushunish muhimdir:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemeLocation="https://www.nedvigimost.com/ example_schema1.xsd"
Birinchi qator - shunchaki eslab qoling. Buni sxemalarni kerakli joyga yuklashga yordam beradigan ob'ekt sifatida tasavvur qiling. Ikkinchi qator - maxsus yuklab olish. schemaLocation bo'sh joy bilan ajratilgan "qiymat - qiymat" shaklidagi qiymatlar ro'yxatini qabul qiladi. Birinchi argument nomlar maydoni bo'lib, u sxemadagi maqsadli nom maydoniga (targetNamespace qiymati) mos kelishi kerak. Ikkinchi dalil sxemaga nisbiy yoki mutlaq yo'ldir. Va bu RO'YXAT qiymati bo'lgani uchun siz misoldagi sxemadan keyin bo'sh joy qo'yishingiz va yana maqsadli bo'sh joy va boshqa sxema nomini kiritishingiz mumkin va hokazo. Muhim:Sxema keyinchalik biror narsani tasdiqlashi uchun siz ushbu bo'shliqni e'lon qilishingiz va uni prefiks bilan ishlatishingiz kerak. Oxirgi misolga diqqat bilan qarang:
<?xml version="1.0" encoding="UTF-8"?>
<nedvig:house xmlns:nedvig="https://www.nedvigimost.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.nedvigimost.com/ example_schema1.xsd">
    <address>ул. Есенина, дом №5</address>
    <owner name="Ivan">
        <telephone>+38-094-521-77-35</telephone>
    </owner>
</nedvig:house>
Biz bu maqsad maydonini nedvig prefiksida yaratdik va undan keyin foydalandik. Shunday qilib, bizning elementlarimiz tasdiqlana boshladi, chunki biz maqsadli sxema bo'shlig'iga havola qilingan bo'shliqdan foydalana boshladik.

Devrenni ulashning ikkinchi usuli

Sxemani ulashning ikkinchi usuli kontaktlarning zanglashiga olib keladigan ma'lum bir joyga ega emasligini anglatadi. Keyin uni shunchaki XML fayliga ulashingiz mumkin va u uni tasdiqlaydi. Bu deyarli bir xil tarzda amalga oshiriladi, faqat siz XML faylida bo'sh joylarni e'lon qila olmaysiz, shunchaki sxemani ulang.
<?xml version="1.0" encoding="UTF-8"?>
<house xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="example_schema1.xsd">
    <address>ул. Есенина, дом №5</address>
    <owner name="Ivan">
        <telephone>+38-094-521-77-35</telephone>
    </owner>
</house>
Ko'rib turganingizdek, bu noNamespaceSchemaLocation yordamida va sxemaga yo'lni belgilash orqali amalga oshiriladi. Sxemada maqsadli bo'sh joy bo'lmasa ham, hujjat tasdiqlanadi. Va yakuniy teginish: biz boshqa diagrammalarni diagrammalarga import qilishimiz va keyin bir diagrammaning elementlarini boshqasida ishlatishimiz mumkin. Shunday qilib, biz ba'zi bir sxemalarda allaqachon mavjud bo'lgan elementlardan foydalanishimiz mumkin. Misol:

Egasi turi e'lon qilingan sxema:

<?xml version="1.0" encoding="UTF-8" ?>
<schema targetNamespace="bonus" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
        <complexType name="owner">
            <all>
                <element name="telephone" type="string" />
            </all>
            <attribute name="name" type="string" />
        </complexType>
</schema>

Birinchi sxemadan egasi turini ishlatadigan ikkinchi sxema:

<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="main" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:bonus="bonus" elementFormDefault="qualified">
    <import namespace="bonus" schemaLocation="xsd2.xsd" />
    <element name="house">
        <complexType>
            <all>
              <element name="address" type="string" />
                <element name="owner" type="bonus:owner" />
            </all>
        </complexType>
    </element>
</schema>
Ikkinchi sxema quyidagi qurilishdan foydalanadi:
<import namespace="bonus" schemaLocation="xsd2.xsd" />
Undan foydalanib, biz bonus maydoniga turlar va elementlarni bir sxemadan ikkinchisiga import qildik. Shunday qilib, biz bonusga kirishimiz mumkin:egasi turi. Va keyingi qatorda biz undan foydalandik:
<element name="owner" type="bonus:owner" />
Quyidagi qatorga ham bir oz e'tibor bering:
elementFormDefault="qualified"
Ushbu atribut sxemada e'lon qilingan va XML fayllarida har bir element o'zidan oldin aniq prefiks bilan e'lon qilinishi kerakligini anglatadi. Agar u yo'q bo'lsa, biz shunchaki tashqi elementni prefiks bilan e'lon qilishimiz kerak, shuningdek, ichidagi barcha elementlarga prefikslarni o'rnatishimiz kerak, bu biz aniq ushbu sxemaning elementlaridan foydalanayotganimizni aniq ko'rsatib turibdi. Va bu erda, aslida, boshqa sxemani import qilgan sxema tomonidan tasdiqlangan XML faylining namunasi:
<?xml version="1.0" encoding="UTF-8"?>
<nedvig:house xmlns:nedvig="main" xmlns:bonus="bonus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="main xsd.xsd">
    <nedvig:address>ул. Есенина, дом №5</nedvig:address>
    <nedvig:owner name="Ivan">
        <bonus:telephone>+38-094-521-77-35</bonus:telephone>
    </nedvig:owner>
</nedvig:house>
Qatorda:
<bonus:telephone>+38-094-521-77-35</bonus:telephone>
Biz birinchi sxemaning maqsadli maydoniga ishora qiluvchi bonus nom maydonini aniq e'lon qilishimiz kerak, chunki elementFormDefault malakali (tekshirish), shuning uchun barcha elementlar o'z maydonini aniq ko'rsatishi kerak.

Maqolaning oxiri

Keyingi maqola seriyadagi oxirgi bo'lib, Java yordamida XML fayllarni qayta ishlash haqida bo'ladi. Biz ma'lumotni turli yo'llar bilan olishni o'rganamiz va hokazo. Umid qilamanki, ushbu maqola foydali bo'ldi va hatto biron bir joyda xatolar bo'lsa ham, u sizga foydali va yangi narsalarni o'rgatadi yoki shunchaki XML fayllarini yaxshiroq tushunish imkoniyatini beradi. Buni batafsilroq o'rganmoqchi bo'lganlar uchun men kichik havolalar to'plamini to'plashga qaror qildim:
  • XSD Simple Elements - ushbu maqoladan o'qishni boshlang va oldinga siljiting, sxemalar bo'yicha barcha ma'lumotlar u erda to'planadi va ko'proq yoki kamroq aniq tushuntiriladi, faqat ingliz tilida. Tarjimondan foydalanishingiz mumkin.

  • nomlar bo'shliqlaridagi video, agar birinchisi aniq bo'lmasa, biror narsaga boshqa nuqtai nazarni tinglash har doim foydalidir.

  • XML nomlar maydoni nomlar maydonidan foydalanishning yaxshi namunasidir va juda keng qamrovli.

  • XML asoslari - nomlar bo'shliqlari - nomlar bo'shliqlari haqida yana bir qisqa maqola.

  • Elementlarni aniqlash uchun XML sxemasidan foydalanish asoslari, shuningdek, sxemalar bo'yicha juda foydali ma'lumotnomadir, lekin siz uni asta-sekin va diqqat bilan o'qib chiqishingiz, materialni o'rganishingiz kerak.

Hammasi aniq, umid qilamanki, agar siz bundan chuqurroq narsani o'rganmoqchi bo'lsangiz, havolalar sizga yordam beradi. Men ushbu manbalarning barchasini o'zim ko'rib chiqdim, barcha materiallarni o'rgandim va umuman olganda, bu men ko'rgan barcha manbalar ichida eng foydalisi edi, chunki ularning har biri yoki boshqa joyda o'qiganlarimni tushunishni yaxshilagan yoki menga yangi narsalarni o'rganishga ruxsat bering, lekin mashg'ulot paytida juda ko'p narsa qilindi. Shunday qilib, bularning barchasini juda yaxshi tushunishni istaganlar uchun mening maslahatim: nomlar bo'shliqlarini o'rganish, keyin sxemalarni XML fayllariga qanday oson ulash va keyin sxemalarda hujjat tuzilishini qanday yozish kerak. Va eng muhimi, mashq qilish. E'tiboringiz uchun barchangizga rahmat va dasturlashda omad tilaymiz :) Oldingi maqola: [Raqobat] Java dasturchisi uchun XML asoslari - 1/3 qism Keyingi maqola: [Raqobat] Java dasturchisi uchun XML asoslari - 3 qismning 3.1 - SAX
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION