Delphi muhitida XML-dan foydalanish. Delphi XE Flack-da XML-ni yaratadigan XML hujjat ob'ekti modelidan foydalanish
Xush kelibsiz! Ushbu blog Internet va kompyuterlarga bag'ishlangan va aniqroq, ular ularga bag'ishlangan.
Ehtimol, ko'p yillar davomida ko'p yillar davomida ko'p yillar davomida ko'rinmaganligini ko'rish mumkin. Ha, bu eng ko'p bloglarning taqdiri. Ushbu loyiha shuhratparastlik ishi va o'sha paytda yozgan ko'plab odamlar kabi, eng yaxshi rus blogerlaridan biriga aylanishni rejalashtirishgan. Xo'sh, agar siz hozir ko'rib chiqsangiz, meniki bilan bir vaqtda yaratilgan bloglardan, ko'pchilik abadiy erigan edi. Va men vaqt blog etishmayotgan edim. Ha, endi yangilanmaydi. Garchi men ushbu saytda 2011 yil Blog raqobatida g'olib chiqqan bo'lsam ham.
Men hatto bularning barchasini olib tashlash g'oyasi bor edi, lekin keyin eski materiallarni qayta ko'rib chiqdim va ular hali ham o'quvchilar uchun foydali bo'lishlarini angladim. Ha, ba'zi maqolalar eskirgan (agar men etarlicha kuchga ega bo'lsam, tegishli belgilarni oladi), masalan, saytlar yangi boshlanuvchilar uchun foydali bo'lishi mumkin - bu erda siz Internetning asosiy tushunchalari haqida o'qishingiz, sozlashni o'rganasiz Internet, Windows yoki hatto Linuxga borishga qaror qiling. Shunday qilib, sarlavhalarga qarang va sizga mos keladigan birini tanlang.
Va, va bundan keyin, bu shunchaki blogdan, balki haqiqiy Internet qo'llanmasi. Sayt barcha mavjud maqolalar toifalar bo'yicha tuzilgan katalog rejimida topish mumkin. Va kim biladi, ehtimol, yangi sifatli maqolalar bu erda paydo bo'ladi.
Qumli
Picodi.ru xalqaro kuponlardan, arzon xaridlarni saqlash va arzon xaridlar bo'yicha polyak mutaxassisi. Qutblar dunyodagi eng tejamkor xalqlardan biri hisoblanadi, shuning uchun ushbu loyiha Polsha boshlang'ich Kodrabatowe.pl-dan o'sganligi ajablanarli emas. Ushbu portalda Rossiyada oddiy Internet foydalanuvchiga nima foydali bo'lishi mumkin?
Zamonaviy Android telefonlari telefonlarga qaraganda ko'proq. Siz o'rnatilgan dasturlar to'plamiga, qo'ng'iroqlaringiz va matnli xabarlaringiz tarixiga, fotosuratlar to'plamlari va ko'p narsalarni o'rganasiz. Ammo vaqt o'tgach, to'liq tartiblangan qurilma sekinlasha boshlaydi, xato yoki shunchaki ekranda tirnalgan holatda yoki tirnalganligi sababli ko'rinadigan ko'rinishni yo'qotadi. Yangi telefonni tanlash va Android telefonini o'zgartirish masalasi mavjud. Agar tanlashni istasa, biz hozir partiyani chetlab o'tamiz, keyin "ko'chib o'ting" yangi telefonga jiddiy muammo bo'lib qolmoqda - men mutlaqo ma'lumotlarni noldan boshlamoqchi emasman. Bu erda biz bugun bu haqda gaplashamiz.
Ushbu blog o'quvchilarining aksariyati, ehtimol, hech qachon versiyalarni boshqarish versiyalariga duch kelishadi va yaqin kelajakda bo'lmaydi. Kechirasiz. Bu juda foydali ixtiro dasturchilar tomonidan keng qo'llaniladi, ammo menimcha, bu juda foydali va matnlar bilan faol ishlaganlar uchun juda foydali bo'lishi mumkin. Ammo, ehtimol, endi versiyani boshqarish tizimi yo'q, "Office" (Microsoft Office) uchun foydalanishni boshlash oson. Shunga qaramay, menimcha, maqolada keltirilgan material barcha o'quvchilarga qiziqarli bo'lishi mumkin.
Agar siz televizor tomosha qilayotgani va Internetga kirish haqida o'ylasangiz, ushbu maqola siz uchun. Yo'q, men ba'zi televizorlar Smart TV funktsiyasiga ega, ammo men buni yaxshi ko'rmaganman. Aftidan, Google-ning yaqinda mutlaqo ajoyib qurilmani namoyish etdi, darhol sensatsiya bilan yakunlandi. Biz ommaviy axborot vositalarini oqimli xomekast (XROMKAST), o'tgan yilgi ma'qullangan va arzon versiyasi haqida gapiramiz.
Dongle Chrosusst, ularning o'lchamlari 2 dyuymdan oshmaydigan o'lchamlari, televizorning HDMI portiga ulanadi va sizga Internet tarkibidagi veb-tarkibni tomosha qilishni yoqtirishga imkon beradi. Oqimli dasturni boshqarish uchun siz iOS, Windows, Android yoki Mac OS operatsion platformalariga asoslangan har qanday qurilma (planshet, kompyuter, smartfon) dan foydalanishingiz mumkin.
Ushbu maqola Android tizim xotirasi moslamasiga, uning etishmasligi va ularni qanday hal qilish uchun yuzaga kelishi mumkin bo'lgan muammolar. Men o'zim android telefonim ma'lum bir dasturni o'rnatishga urinayotganda, xotira etishmovchiligi haqida muntazam ravishda xabarlar chiqara boshladi. Bozor haqidagi tavsif bo'yicha taxminan 16GB bo'lgan bo'lishi kerakligini va qo'shimcha xotira kartasi yordamida men ham ushbu jildni oshirganiga qaramay men uchun juda g'alati edi. Biroq, muammo, men ildizga kirish yoki telefonni zavod holatiga to'liq tiklashni talab qilmaydigan to'g'ri echimni topgunimcha, men muammoli echimni topdim.
Yaqinda e-biznes tizimlarini yaratishga katta e'tibor beriladi yoki ular deb nomlanganidek - B2B (biznes uchun biznes). Tananing Internet texnologiyalarini muvofiqlashtirishning birja tizimlarini qurish bo'yicha tavsiyalar - www Konortsium: XML hujjatlari va XML hujjatli almashinuv tizimlarini qurish bo'yicha ta'kidlangan.
E-Biznes-dan foydalanishning samaradorligi - bu tuzilgan ma'lumotlarning aniq va vizual vakili, zamonaviy tarmoq protokollaridan foydalanish va real vaqt rejimlarini yaratish qobiliyati tufayli B2B-ni yaratishning arzon narxlarida.
XML hujjatlar shaklida ma'lumot olishning mustaqilligi har xil, elektron biznesda ishtirok etish, bir-biridan mustaqil mahsulotni ishlab chiqarishga imkon beradi.
Barcha tizimlarda birja odatda HTTP so'rovlaridan foydalangan holda bir xil sxema bilan quriladi. SSL protokoli SSL protokoli sifatida qo'llaniladi (lekin bu alohida mavzu).
XML xabarlarini qayta ishlashning mumkin bo'lgan variantlaridan biri bu ISL / CGI (ISAPI) -Nge yoki com (Server) komponentlarini XML hujjatlarini shakllantirish yoki qayta ishlashdir.
Bir tomondan, ariza post rejimida HTTP so'rovi chiqaradi, boshqa tomondan, so'rovni qayta ishlash va javob qayta ishlash va javob qayta ishlangan veb-server hisoblanadi. Axborot almashinuvi XML hujjatlaridan foydalanadi.
Eng samarali amalga oshirish variantlaridan biri bu Mavjud XML parserni qo'llab-quvvatlaydigan Mavjud XML parserdan foydalanish. Bunday parser bu Win '98 yoki IE 4.7 va undan yuqori (Win '95 uchun) ning ajralmas qismi (Win '95) MSXML.dll kutubxonasida joylashgan com serverini tarqatishdir.
Ob'ektni (com) komponentlar modeli (com) interfeys tizimi orqali foydalanishning bir mohiyati va usullariga usoqlangan ma'lumotlar va usullar bir mohiyat va usullarga kiradi. Delphi Ob'ekt sinflariga kirish huquqiga ega (bir nechta sinflar bitta sinflar bitta sinfga kiritilishi mumkin). Ob'ektlarga kirish sinf instantsiyasini interfeys tizimi orqali boshlash orqali amalga oshiriladi. Interfeyslarning tavsifi vositasi avtomatik ravishda vositalarni avtomatik ravishda amalga oshirish mumkin bo'lgan interfeys ta'rifi (IDL) tomonidan amalga oshiriladi.
Delphi com serveridan importni anglatadi msxml.dll.Idl interfeysi tavsifi quriladi va kutubxona turining ikkilik tavsifi tlb. Ushbu operatsiya tizim menyusida amalga oshiriladi: Loyiha | Kutubxonada olib boriladigan import:(1-rasm). Quyidagi dialog oynasi paydo bo'ladi (2-rasm), unda siz Ob'ektni tanlamoqchi bo'lgan (bizning holatda ob'ekt "Microsoft.XMLldom" (2.0 versiyasi) "sifatida ro'yxatdan o'tkaziladi") va TLB faylini yarating (tugmani bosing) Jihozni yarating.). TLB faylidan foydalanib, atrof-muhit "paskkalevskiy" faylini ishlab chiqaradi COM serveri tavsifi - MSXML_TLB.PAS
Msxml_tlb.pas fayli barcha interfeyslar, konstantalar va com serverlarini tavsiflaydi.
Com element ob'ektlariga kirish uchun ko'rsatmada kerak Foydalanadi.kutubxona ma'lumotlari faylining nomini qo'shing (MSXML_TLB.PA). Quyida XML hujjatni yuklab olgan va uni eslatuvchi MSM1 matn maydonchasida namoyish etadigan MSXML-ning eng oddiy dasturi mavjud.
foydalanadi. Windows, xabarlar, SyeTutillar, sinflar, grafika, boshqarish vositalari, shakllar, dialoglar, oesverver, msxml_tlb, Stdctrls; tur TFF1 \u003d. sinf(Takkik) tugmasi1: Tboutton; MEMO1: TMEMO; jarayon. Tugmachasini bosing (jo'natuvchining: yuk tashuvchi); oxiri; var. Forma1: TFF1; amalga oshirish ($ R * .dfm) Jarayon.Tform1.button1click (jo'natuvchi: tog '; // Soklass Ob'ekt domdomeni deklaratsiyasi; var.kodoc: kodmododum; // imoddokument interfeysi bilan mos keladigan sinf; var.Doc: IXMDOCKON; boshlanishi. // domdookent ob'ektining namunasini yaratish; Doc: \u003d kodoc.create; // domdookent ob'ekti misolining rejim usuliga qo'ng'iroq qiling; Doc.oad ("ma'lumotlar.xml"); // domdoment ob'ektining XML xususiyat namunasiga kirish; Memo1.Text: \u003d doc.xml; oxiri; oxiri.DOM kontseptsiyasi - Ob'ekt hujjati modeli
Har bir XML hujjati individual elementlar (ob'ektlar) ga kirish mumkin bo'lgan ob'ektlarning (sinflar) ko'pligi sifatida tasvirlangan. Dom-Interfeys oddiy domstratsiya yoki belgilar ob'ektlariga, hujjatning XML elementlariga kirishni yoki Hujjatning XML elementlarini ajratishni tavsiflaydi: domfragmentelement, domnody, distasyon.
Quyida XMLDOMDOCKENT, XMLLLDOMNODE, XMLLDOMNODELISTNING MUHIM XUSUSIYATLARI va usullari keltirilgan. Shuni ta'kidlash kerakki, quyida keltirilgan MSxml.dl XML analizator MSXML.Dl XML analizator MSXML.dl XML analizator MSXML.dl XML analizatoridan W3C modeli tomonidan tasdiqlangan.
Dom ob'ektlarining yanada to'liq tavsifi topilishi mumkin
XMLDOMDOCK ob'ekti | |
Ob'ekt ierarxiyasining yuqori darajasini va hujjat bilan ishlashning usullarini ifodalaydi: uni yuklab olish, tahlil qilish, elementlar, atributlar, sharhlar va boshqalar. . | |
Xususiyatlar | |
Async. | Hozirgi ishlov berish rejimini belgilaydigan mulk |
Parda | XMDMOMPARSEROROEROR XAVFSIZLIKNI YOZIShI |
Hujjatni tekshirishni o'chirish. | |
url | Hujjatning URL manzilini qaytaradi |
hujjatlar | Hujjatning ildiz elementiga XMLDOMMYMECT ob'ekti sifatida ko'rsatilgan. |
Usul | |
yuk (URL) lowxxml (XMMFRING) |
XML hujjatni yuklaydi |
saqlash (objtarget) | Faylda XML hujjatni tejash |
bekor qilish. | Hujjatni yuklab olish va qayta ishlash jarayonini to'xtatadi. |
yurantik (ism) | Joriy element uchun belgilangan nom bilan yangi atribut yaratadi. |
createode (turi, ismi, nam) | Belgilangan turdagi va sarlavhaning tugunini yaratadi |
eRANIKA (Tagname) | Ko'rsatilgan nom bilan hujjat elementi yaratadi. |
creatnextNode (ma'lumotlar) | Hujjat ichidagi matn yaratadi |
getelinsbytagnam (taggume) | Belgilangan nom bilan hujjat elementlari to'plamiga havolani qaytaradi |
nadefroid (IDRING) | Identifikator tomonidan qidirish elementi |
XMLLDOMNOD ORGANI | |
XMLLDOMNode asosiy dom interfeysini amalga oshiradi Tugun., Hujjat daraxtining alohida tuguni bilan manipulyatsiya qilishga mo'ljallangan. Uning xususiyatlari va usullari, hozirgi tugun haqida to'liq ma'lumot olish va o'zgartirish imkonini beradi - uning turi, ismi, to'liq ismi, tarkibi, bolalar elementlari ro'yxati va boshqalar. | |
Xususiyatlar | |
nadename, Bazename. | Joriy tugun nomini qaytaradi. |
prefiks. | Nomlar old prefiksini qaytaradi. |
ma'lumotlar turi. | Hozirgi tugunning tarkib turini belgilaydi |
nodezip, nodetynesting | Hozirgi tugun turini qaytaradi: |
atributlar. | XMLDOMNAMENMAP to'plamlari sifatida joriy tugunning atributlari ro'yxatini qaytaradi. |
matn. | Joriy yordam tarkibini matn shaklida qaytaradi. |
xml | Joriy yordamning XML vakilligini qaytaradi. |
nodevalue. | Joriy tugunning tarkibini qaytaradi. |
bolalarni. | XMLLDOMNODELISTA sifatida bolalar elementlari ro'yxatini qaytaradi. |
finti, halokatli. | Birinchi / oxirgi bolaning elementini qaytaradi |
oldindan oldin, keyingi | Oldingi / keyingi hamshiralik elementini qaytaradi. |
ota-onalar. | Ota-ona elementiga murojaat qiladi. |
zolim | Ko'rsatgichni joriy tugun joylashgan hujjatga qaytaradi. |
Usul | |
appendchild (Nyutild) | Hozirgi tugunning yangi bola elementlarini qo'shadi. |
inverbucore (Nyutild, Refchdod) | Bola tugunini joylashtiring, u joriy pastki qismida ko'rsatilgan tugun parametrining parametri tomonidan ko'rsatilgan tugunning "qoldi. |
conenode (chuqur) | Joriy element nusxasini yarating. |
getattribut.(Ism) getATTributnode. (Ism) setattribe (ism, qiymat) setattributeneNece (XMLLDOMATTREUT) |
Atributlar (yaratish, o'qish, yozish) ob'ektlariga kirish. Ism - atribut nomi, qiymat - uning qiymati. XMLDOMATTREKET ob'ektining qiymatini qaytaradi. |
mablag '(Nyutild, Eski, Eskild) RemovDechild (eski) | Newild-dagi filiallarning joriy ro'yxatining eski ro'yxatining o'rniga. Eski ob'ektni olib tashlash |
tanlangan tanlangan tanlanganlar (PIDTRING) | Search naqshini yoki birinchi tugun tomonidan tanlangan XMLDOMNODELISTYISTYANI SAQLANG |
transformator (Styesheet) transcnodetBeve (Styleseet, ChiqishOthect) |
Joriy tugunni qo'llab-quvvatlash va satrni qaytarish uchun uslub jadvalini tayinlaydi - qayta ishlash natijasi. Domadombekan ob'ekti bilan havola, XSL ko'rsatmalari joylashgan parametr sifatida uzatiladi. |
Biznesda XML-dan foydalanish.
Aniqroq rasm uchun tushuntirish kerak va nega bu nima ekanligini tushunish uchun nima uchun kerak:
B2B yoki korporativ ERP tizimini qurishda, XML hujjatlari yoki reklama ixtisoslari o'rtasida ma'lumot almashishni tashkil etishda, samarali tasdiqlangan axborot tizimi mavjud bo'lgan Internet-serverlar asosida HTTT protokollarida mavjud bo'lgan veb-serverlar tizimi mavjud.
Bir tomondan, ariza post rejimida http so'rovi chiqaradi, boshqa tomondan, veb-serverni qayta ko'rib chiqiladi va javob qaytariladi. XML hujjatlari almashish sifatida ishlatiladi.
Masalan, buxgalteriya dasturi (ACS Buxgalteriya hisobi) oddiy korporativ ERP tizimida schyot-fakturani aniqlash va uni omborga (ACS omboriga) o'tkazadigan filialga o'tkazilishi kerak. San'at Tizimning B2B-ni yaratishda muammoning o'xshashligi, korxona talabnomaning mavjudligi (sotib olish uchun buyurtmani) etkazib beruvchi V. deb so'rab turgan vaqtni o'zgartiradi (sotib olish uchun buyurtma beradi).
A va uning dasturi mijoz sifatida harakat qiladi. SQL serverida omborda omborxonaga ega bo'lgan etkazib beruvchiga xizmat ko'rsatadi. Birja korporativ veb-server etkazib beruvchisi V.
Quyida quyidagi odatiy birja algoritmidir:
3-rasm.
- AR Korxonasi A.boshlanmoqda a. A.(Mahsulot buyurtma), bu veb-mijoz sifatida ishlaydi.
- A. A.xML hujjatini (masalan, hisob-fakturani) ishlab chiqaradi va uRI - dasturni qayta ishlash bo'yicha ilova identifikatoridan foydalaniladi. URI har bir turdagi barcha turdagi hujjatlar yoki shaxs uchun bir xil bo'lishi mumkin. Bularning barchasi B2B (Web) serverining tuzilishiga bog'liq.
- Veb-server so'rovni tahlil qiladi va serverni yaratadi Jarayon B.XML hujjatini parametr sifatida o'tkazib.
Veb-serverdagi jarayoni boshlangan va jinsi sahifasi, CGI (ISAPI) - ilova yoki Java Everlet (Server ilovasi) - Jarayon B.- SQL ma'lumotlar bazasi serveriga so'rov yuboradi.
- SQL serveri ma'lumotlar bazasida zarur operatsiyalarni amalga oshiradi, javobni shakllantiradi va qaytaradi. Jarayon B..
- SQL serveridan javobda Jarayon B. XML hujjatini (javob) ishlab chiqaradi va mijozlarga murojaat qilish uchun HTTP so'roviga javob sifatida ruxsat beradi.
- Bundan tashqari, mijoz tomonidagi vaziyatga qarab, yangi HTTP so'rovi shakllantiriladi yoki seans tugaydi.
Hujjatlarni boshqarishning tashkil etilishi haqida bir necha so'z.
XML almashinuv tizimining asosiy qoidasi:
- birinchidan- elektron hujjatlar oqimini va ularning tarkibini rivojlantirish;
- ikkinchidan- jarayonlar funktsiyalari (Subprosesses) I.E. XML hujjati har bir jarayonga nisbatan qanday funktsiya faoliyatini amalga oshiradi.
HTML hujjatiga o'xshash har bir XML hujjati xabar sarlavhasi (MA'LUMOT) va xabarlar tanasi (ushbu ma'lumotni talabga javob berish uchun belgilash uchun). XML hujjati to'g'ri shakllanishi uchun uning ikki komponenti uchun "sarlavha" va "so'rov" ni belgilash uchun, masalan, freymlarni freymlarga moslashtirish kerak. Standart hujjatning ko'rinishi quyida keltirilgan:
Sarlavha (4-rasm), HTML hujjatlaridan farqli o'laroq, turli xil xizmatlarning turli xil ma'lumotlarini o'z ichiga olishi kerak, shu jumladan tarqatilgan hujjat turi, shu jumladan, tarqatilgan hujjat turi va ishlov berish jarayoni to'g'risidagi ma'lumotlar. Hujjatni axborotni qayta ishlash qabul qilinadi, I.E. Muhim qism yorliq bilan tavsiflanadi. Shuni ta'kidlash kerakki, sarlavha tuzilishi barcha turdagi hujjatlar uchun birlashishi kerak.
Server tomonidan ishlayotgan jarayon uchun quyidagi hollarda qayta ishlash algoritmini qayta ishlash (lekin kerak emas):
6-rasm.
Mijoz qismini yaratishda ba'zi asosiy lahzalar
Yuqorida aytib o'tilganidek, XML hujjatini yaratish paytida uning vakili dom model shaklida taqdim etiladi. Quyida XML xabar sarlavhasi dasturining Delphi matni matni misolidir.
jarayon.Thtread1.Headercreater (yuboruvchi: tog '; var. // sinflar haqida e'lon qilish kerak Kodoc: kodmododum; // xlimdomDocenty ob'ekti Doc: domdocument; R: IXMMLLELELT; Tugun: Ixmldomelelement; // domstekst txt: ixmldomText; // dommattribue mutlati: ixlimldomatte; boshlanishi. // dom hujjatni yaratish Doc: \u003d kodoc.create; Doc.set_async (noto'g'ri); // Dastlabki boshlang'ich dom hujjat Doc. yuklashshxml ("Shuni ta'kidlash kerakki, kodomoc: kodomatlar va doc: domdocument o'zgaruvchisi, shuningdek yaratish usulini yaratish (\u003d Codoc.Create;) bir marta amalga oshiriladi. O'zgaruvchining deklaratsiyasi ushbu misolda ko'rinishda ko'rsatganidek, global o'zgaruvchilar tavsifi (I.E. bir dastur moduli domdocument turidagi global o'zgaruvchini).
Yuqoridagi dastur natijasi yaratilgan sarlavhasi, XML hujjatining namunasi bilan bog'liq bo'ladi: 5-rasmda tasvirlangan.
5-rasm.
6-rasm.
XML hujjatlari shaklida ma'lumotlarni uzatishning asosiy afzalligi shundaki, u, shuningdek, olingan va uzatilgan tomonda bo'lgan jadvaldagi jadvallarning mustaqil tuzilishi yordamida xabarni shakllantirish mumkin. Misoldan foydalanish, korxonaning schyot-fakturalari to'g'risidagi ma'lumotlarni A-rasmda ko'rsatilgan strukturaning zarbasidan foydalanish talab qilinsin
Hisob-fakturani hisobga olgan holda schyot-fakturani o'z ichiga olgan XML hujjatini (A) schyot-fakturasi to'g'risida ma'lumot taqdim etish uchun:
Tanlamoq * Incoice_greal-dan Qayerda Invericenum \u003d: Num TanlamoqTovarlar, qiymatli, narx, hz_cod Dan.Tovarlar Qayerda Invericenum \u003d: Num //: num - schyot-faktura raqamini belgilaydigan parametr.Quyida XML hujjatining organini shakllantirish dasturining bir qismi:
jarayon. Thtread1.DatabododCreatr (jo'natuvchi: tokcha); var. // sinflar va xlimdomdodument // Codoc: kodomatnomojum; // butun modul uchun global bo'lishi kerak. // doc: domdomen; // dublement ob'ektlarining e'lon qilinishi R: IXMMLLELELT; // domelement; Tugun, node2: ixmldomelelement; Node3, node4: ixtildomelelement; // domstekst txt: ixmldomText; Str: satr; // invoyinumber: butun son; - Jahon o'zgaruvchisi - // Masuring 987654 // querya, so'rovlar: Satr; - Global o'zgaruvchilar, // Talaba - so'rov va "Quierb" to'g'risidagi umumiy ma'lumotni saqlash / so'rov / so'rovnomalar to'g'risidagi umumiy ma'lumotni saqlash / so'rovnomada ko'rsatilgan tovarlar haqida ma'lumot boshlanishi. So'rov.cloz; // "A" matnida ko'ring So'rov.text: \u003d query; // bajarishni talab qilish So'rov .exeksql; So'rov.open; // ildiz elementi manzilini oling R: \u003d doc.get_documentlement; Node2: \u003d doc.criteelement ("So'rov"); // domelementni yarating (yorliq) Tugun: \u003d doc.kreateulte ("Hisob-faktura"); // ildizga elementni qo'shish R.Appendchild (Node2); // bir narsani qo'shish Node2. Ileendchchch (tugun); // domelementni yarating (yorliq) Node3: \u003d doc.createullue ("Obinma"); // bir narsani qo'shish Tugun. Ileendchchch (node3); // "Obinatsiya" maydoniga murojaat qiling Str: \u003d so'rov .fieldbyname ("Ob-shuv"). Asartring; // matn tugunini yaratish \u003d dala qiymati // The The TopSection qiymati // matn tuguni, o'zgaruvchan str Nodode.appendchch tugagan (TXT); // kabi shunga o'xshash operatsiyalarUshbu protsedura natijasida XML hujjatning quyidagi matni shakllantirildi:
Ochiq usul so'rovni shakllantirish uchun ishlatiladi. Ixmmhtttrofe:
jarayon. Ochiq (Conc Btrmetrhod, usul turi \u003d "posti" bstrurl, - URL Varazyc Server Manzil, - Asencroncous Server Manzil \u003d Haqiqat bstuser, - BostuserHujjatlarni qayta ishlashning server qismini yaratish
Yuqorida aytib o'tilganidek, HTTP so'rovini qayta ishlash CGI dasturlarini yoki Java serverli xizmatlarini amalga oshirishi mumkin. Asp sahifalar yozish uchun mumkin bo'lgan variantlar. Ammo bu holda, ma'lumotlarni uzatish faqat so'rov simidan foydalanib "olish" bilan amalga oshiriladi. Garchi, http sahifalarni talab qilish Sahifalarni so'rash CGI dasturiga qaraganda samaraliroq ishlaydi. Biroq, menimcha, hech qanday farq qilmasdan, qandaydir ishlov berish va bundan ham muhimi, qanday qilib qayta ishlash dasturini yaratish va nimani anglatishi bilan emas.
Agar biz avvalgi bobdan XML hujjatli shakllanish variantlarini ko'rib chiqsak, server dasturining vazifasi XML hujjatlarining aksi hisoblanadi. Quyida XML hujjatini tahlil qiladigan dasturning bir qismi:
jarayon.Thtread1.dateParer (jo'natuvchi: tokcha); var. // dublement ob'ektlarining e'lon qilinishi R, Fnode: Ixmldomelement; Str, Fayl nomi: satr; Parm: satr; // Soklassning e'lon va CodocxXML, CodocxSL, kodocResult: kodomatnoum; // xlimdomDocenty ob'ekti XMLDOC, XSLDOC, Natistnoc: domdomum; // httpstr: satr; - HTTP so'rov simini o'z ichiga olgan global o'zgaruvchi Boshlanishi. XMLDOC: \u003d Codocxxml.create; XMLDOC.OGHXML (httpstr); // ildiz elementi manzilini oling R: \u003d doc.get_documentlement; // element qiymatini olish Fnode: \u003d R.SelectsingLenode ("// Tumpolilik"); // atribut qiymatini oling \u003d "buyurtma" Fayl nomi: \u003d FNode.gettttribeti ("ID"); // va fayl nomini shakllantirish Fayl nomi: \u003d Filename + ". XSL"; // hujjat xsldoc-ni yarating XSLDOC: \u003d Codcxxsl.Create; Xsldoc. yuklashxml (fayl nomi); // xmldoc hujjatini yaratish ReadDoc: \u003d CodocResult.Create; // sinxron ishlov berish rejimini o'rnatish Natijaning natijasi.Set_async (noto'g'ri); // debyutka o'tkazish chekni o'rnatish ReadDoC.Validateonparag: \u003d TRUM; // XSL shablonining xmldoc colphse XMLDOC.TRANSFORNOC, Natijada (Xsldoc, Natiunddoc); // o'zgaruvchisining o'zgaruvchisi matn qiymatiga tayinlanadi // natijasida olingan hujjat. Str: \u003d natijaning natijasi; // qidiruv elementidir Fnode: \u003d R.SeleSinsingLenode ("// inociceNumber"); // va element qiymatini olish Parm: \u003d Fnod.Text; // kirish so'rovini yoping So'rov.cloz; Save.Text: \u003d Str; // parametr qiymatini belgilash So'rov .pamzing: \u003d parm; // bajarishni talab qilish So'rov .exeksql; oxiri;ParRingning butun doirasi har bir hujjat uchun shakllangan XSL shablonini qo'llashdir. Tahlil natijalari SQL so'rovlar satridir. Natijada, yaratilgan SQL so'rovlari satrini ijro etish DBMMda zaruriy o'zgarishlarni amalga oshiradi.
Andoza orqali tahlil qilishning afzalligi shundaki, u ba'zi ma'lumotlar moslashuvchanligi va dastur kodeksidagi algoritmning to'liq mustaqilligi olinadi. Quyida XSL shablonining matni qayta ishlash uchun ishlatiladigan matnning matni.
Yuqoridagi misolni aytib o'tishda shuni ta'kidlash kerakki, teglar juftliklaridan foydalanish va rasmiy, chunki Natijada XML hujjatida kamida bitta tugun mavjud bo'lishi kerak. NatijaDoc.Text usuli XML hujjatli Natiunddoccoce tahlilida olingan matn qiymatini belgilaydi. Bunday holda, qiymatlar juft yorliqlar va i.e. Biz SQL so'rovini tuzdik.
Dasturni yozishning yana bir xususiyati, SQL parametridan foydalanish imkoniyati paydo bo'lishi kerak : raqam. Parametrdan foydalanish XSL shablonining matnini soddalashtirishga imkon beradi. Ta'rif Ushbu XM hujjatning tegishli elementlarining qiymatini dastlab tegishli tugunning ismini tanlash uchun aniqlanadi, masalan:
XSL haqida qisqacha
XSL qisqartmasi kengaytiriladigan stillar jadvalidan kelib chiqadi - Style Jami formatlash tili (XML ma'lumotlar). Ketely Stylseteet Tilidan (XSL) sarlavhasi aniqlanganidek, XML ma'lumotlarni formatlash uchun ishlatiladi. W3C XSL ta'rifi bilan ikki qismdan iborat:
- XSLT - XSL Sproting. Tilni o'zgartirish yoki formatlash uchun ishlatiladigan (Tirik). Shunday qilib, XSLT-dan foydalanib, biz bir nechta ma'lumotlar va ma'lumotlar taqdimot shakllarining turli bo'limlarini olishimiz mumkin.
- Elementlarni formatlash. Ushbu elementlar XSL-dan foydalanilgandan so'ng, tfografik ma'lumotlar dizaynining barcha elementlarini o'z ichiga oladi. Faqat HTML sahifalarni shakllantirish uchun ishlatiladi.
XSLT-dan foydalanib, kerakli XML faylidan ma'lumotlarni tanlashimiz va ularni foydalanuvchiga taqdim etish uchun ularni tashkil qilamiz. Masalan, bizning holatlarimizda biz XML ma'lumotlarini SQL so'rovi sifatida o'zgartiramiz. Klassik XSL arizasi odatda ma'lumotlarni HTML sahifalar yoki RTF fayllari ko'rinishidagi noyob vakillik qilishdir.
XSL fayli Andoza (shablon) ni tavsiflaydi, unga ko'ra, XML ma'lumotni qayta ishlash amalga oshiriladi. XSL shablonlariga qaytish, XSLT (ko'rsatmalariga) quyidagi elementlar ajratilishi mumkin:
XSL ko'rsatgi | tavsif |
---|---|
xSL: Qo'llash-shablonlar | Yo'nalish, tegishli shablon atributi qo'llanilishini ko'rsatadigan ko'rsatma \u003d "shablon nomi" |
xSL: atributi. | atribut daraxtini yaratadi va uni chiqish elementini yaratadi, ism \u003d atributi "parametrlari, nom bo'shlig'i parametri, nom bo'shlig'i - Uri (nomsampaese prefiks) |
xSL: Call-shablon | shablon, atribut nomi \u003d "URI shablonda URI" ni keltirib chiqaradi |
xSL: tanlang. xSL: Qachon. xSL: aks holda. |
xSL shart bo'yicha tanlov qilish: Qachon EXPR \u003d "Skriptulyatsiyani hisoblash", til \u003d "Til nomi" sinov \u003d "hisoblangan ifoda" |
xSL: sharh | chiqish hujjatida sharh beradi |
xSL: nusxa xSL: nusxa ko'chirish |
chiqish manbasidagi joriy tugunni nusxalaydi yoki hujjat paragrafini tanlanganlik atributini tanlang \u003d "Manba tugunning nomi" nomi |
xSL: element. | ism va atribut nomi bilan chiqish elementini yaratadi |
xSL: har biri uchun | barcha novdalar ro'yxati tugunlariga shablonni qayta ko'rib chiqish, tugunlar ro'yxatini tuzing. |
xSL: agar bo'lsa. | shartlar Tekshirish shartnomasi information atributlari tomonidan belgilanadi |
xSL: qo'shing | tashqi shablonni, atributni o'z ichiga oladi @ "URI mos yozuvlar" |
xSL: Chiqish | chiqish natijalarini belgilaydi, uslub atributi "XML", "HTML" yoki "matn" bo'lishi mumkin |
xSL: Param | parametr qiymatini belgilaydi, ism \u003d "parametr nomi" atributi, -ni tanlang \u003d "Qiymat" |
xSL: Ishlov berish bo'yicha ko'rsatma | qayta ishlash bo'yicha ko'rsatmalar yaratadi, atribut nomi \u003d "Ism Jarayon ko'rsatmalar" |
xSL: Saralash. | ko'p ishlarni saralaydi, atributlar \u003d "tugunning ismi", ma'lumotlar turi \u003d "Raqam", "Saralash", "Oscencing" |
xSL: Styleyheet. | xSL shablon hujjatini belgilaydi, bu XSLT uchun ildiz elementi |
xSL: shablon. | xSL shablonini, ismni belgilaydi \u003d 'Uri prefiks atributi "Match \u003d" shablon qo'llaniladigan tugunga eslatma " |
xSL: Matn. | matnni ishlab chiqarish oqimiga, o'chirish-chiqish-Escapiting \u003d "Ha" yoki "Yo'q" atributlari ESC belgilarini yaratish qobiliyatini ko'rsatadi |
xSL: qiymat | tanlangan tugunning qiymatini matn sifatida kiritadi, Select \u003d "Tanlashning moslashishi" atributining atributi |
xSL: o'zgaruvchi | o'zgaruvchan chegaralarining qiymatini belgilaydi, atlati \u003d "o'zgaruvchan ism", -ni tanlang \u003d "O'zgaruvchining qiymatini hisoblang" |
xSL: OLDIN | joriy kontekstni, standart qiymati, standart qiymati, joriy qiymatni hisoblash uchun shablonga tegishli parametrni qo'llaydi. |
Xulosa
Xulosa qilib aytganda, shuni ta'kidlash kerakki, Standart XML parser yordamida msxml.dll.bu faqat tahlil qilish va XML hujjatlarini yaratish vositasi emas. Masalan, komponentlardan samarali foydalanish uchun XML hujjatlarini yaratish uchun TPagepRoderer.va TTablProderer.. Ammo bu maqolada faqat dom modelini amalda qo'llashning kengligi va imkoniyatlarini ta'kidlaydi.
Muallif mavzuni muhim ahamiyatga ega bo'lgan fikrlar, umumiy tarkib, taqdimot uslubi, shuningdek, qamrab oluvchi kitoblarning chiqarilishi sifatini yanada oshirishga yordam beradigan boshqa barcha sharhlar uchun juda minnatdor bo'ladi XML hujjatlaridan foydalanishning amaliy tomoni elektron tijoratda. Elektron hujjatlarni qo'llashning amaliy tomoni haqida ko'proq ma'lumot olish uchun siz muallifning veb-saytida www.ecs.al.rudan o'rganishingiz mumkin, shuningdek manba matnlari va misollarni joylashtirish rejalashtirilgan.
XML Til tobora ko'proq ma'lumot saqlash, dasturlar va veb-kam tugunlar o'rtasida almashish uchun ishlatiladi. Ko'pgina dasturlarda bu til boshqalarga ma'lumotlarning asosiy saqlashi sifatida ishlatiladi - XML \u200b\u200bma'lumotlarni eksport qilish va import qilish. Bundan kelib chiqadiki, ishlab chiquvchilar uchun XML ma'lumotlarni qanday ishlatish haqida o'ylash vaqti keldi.
Ushbu maqolada biz XML hujjat ob'ekti modelini (Dom) va uni Microsoft XML Dom tomonidan amalga oshiramiz.
XML Dom - bu XML fayllarni yuklab olish va qayta ishlash va qayta ishlash uchun ob'ektlarni taqdim etadigan ob'ekt modelidir. Ob'ekt modeli quyidagi asosiy ob'ektlardan iborat: XMLLDOMDOD, XMLLDOMNODELIST, XMLLDOMNODED, XMLLDOMMOMAMEDNOLAP va XMLDOMOOMPAREEDERROR. Ushbu ob'ektlarning har biri (XMLDOMPARSErrordan tashqari) ob'ektning qadriyatlari va tuzilmasini boshqarish, shuningdek, XML hujjat tuzilishi bo'ylab harakatlanish uchun xususiyatlar va usullar mavjud.
XML Domning asosiy ob'ektlarini ko'rib chiqing va Borland Delphi-da foydalanishning bir nechta misollarini keltiring.
Borland Delphi-da XML Delfi-dan foydalanish
Microsoft XML Dom-dan Delphi dasturlarida foydalanish uchun siz tegishli turdagi kutubxonani loyihaga ulashingiz kerak. Buning uchun biz loyihani amalga oshiramiz | Import turlari va Import turidagi kutubxona dialoida, Microsoft XML versiyasi 2.0 versiyasi (2.0 versiyasi) ni tanlang.
YANGILIShDAN BIRINCHI tugmasini bosgandan so'ng, MSXML_TLB interfeysi moduli yaratiladi, bu XML DOM ob'ektlaridan foydalanishimizga imkon beradi: dona, xmdocument, XMLxtprusti va MSXML.dll kutubxonasida amalga oshiriladi. Msxml_tlb modulidagi havola Foydalanishlar ro'yxatida keltirilishi kerak.
XML DOM qurilmasi
Hujjat ob'ekti modeli filiallardan tashkil topgan daraxtning tuzilishi shaklida XML hujjatni anglatadi. XML DOM dasturiy interfeyslari dasturlarni hujjat daraxtini boshqarishga va uning filiallarini boshqarishga imkon beradi. Har bir filialning o'ziga xos turiga ega bo'lishi mumkin (domnodetippe), shuningdek, ota-onasi va filiallari aniqlanadi. Ko'pgina XML hujjatlarida, siz elementning filiallarini, atribut va matn filiallarini topishingiz mumkin. Atributlar (atribut) bu filialning maxsus turi va yordamchi tarmoqlar emas. Atribut boshqaruvi uchun XML DOM ob'ektlari tomonidan taqdim etilgan maxsus usullar qo'llaniladi.
Microsoft XML D-ni tavsiya etilgan World Conscessiumi (W3C) Interfeysiumini amalga oshirishga qo'shimcha ravishda XSL, XSL naqshlari va ma'lumotlar turlarini qo'llab-quvvatlaydigan usullar mavjud. Masalan, tanlangan tanlangan shablonlar sintaksisini (XSL naqsh sintaksisidan foydalanishga imkon beradi va transformator usulida o'zgarishlarni amalga oshirish uchun XSLdan foydalanishni qo'llab-quvvatlaydi.
XML hujjatini sinab ko'ring
XML hujjatining namunasi sifatida quyidagi tuzilishga ega bo'lgan musiqa CD-ROM katalogini oling:
Endi biz XML Dom modelini, tanishish ob'ekti bilan tanishishini ko'rib chiqishga tayyormiz.
XML Hujjat - XMLDOMDOCKANING AQUSI
XML hujjati bilan ishlash uni yuklab olish bilan boshlanadi. Buning uchun biz yuklab olingan hujjat URL manzilini ko'rsatuvchi faqat bitta parametr mavjud bo'lgan yuk usulidan foydalanamiz. Fayllarni mahalliy diskdan yuklab olishda faqat to'liq fayl nomi ko'rsatilgan (fayl: ////// protokoli ushbu holatda qoldirilishi mumkin). Agar XML hujjati satr sifatida saqlansa, bunday hujjatni yuklab olish uchun Loadxll usulidan foydalanish kerak.
Hujjatni yuklab olish usulini boshqarish (sinxron yoki asenkron), ASYNC mulki ishlatiladi. Odatiy bo'lib, bu mulk tegishli ekanligini ko'rsatadigan, hujjat asinxron va nazorati hujjatga to'liq yuklanmaguncha, dasturga qaytariladi. Aks holda, hujjatni sinxronlashtiradi, so'ngra siz to'ldirish uchun, uni aniqlash yoki yo'qligini aniqlash uchun tayyor mahsulotning qiymatini tekshirishingiz kerak. Shuningdek, siz profeatate xususiyati qiymatini o'zgartirishda nazoratni oladigan noaddiy statechange tadbirini olib borishingiz mumkin.
Yuk usulidan foydalangan holda XML hujjatni qanday yuklab olish mumkinligi ko'rsatilgan:
Foydalanuvchilar ... Msxml_tlb ... protsedura TFF1.Button1click (jo'natuvchi: tog '; Var Xmldoc: IXMLDOMDOD; XMLDOCni boshlang: \u003d CodomDocument.Creatum; XMLDOC.ASYC: \u003d FALSE; XMLDOC.OG ('c: \\ ma'lumot \\ ma'lumot.xml'); // // bu erda // xml hujjat va uning filiallari // xmldoc: \u003d nIL; oxiri;
Hujjat yuklangandan so'ng, biz uning xususiyatlariga murojaat qilishimiz mumkin. Shunday qilib, tugunning mol-mulkini #dokening qiymati o'z ichiga oladi, natriy qiymatida natriy qiymatida natriy qiymat - bu hujjatning xususiyatidir, URL-mulki - bu fayl: /// C: /Data/data.XML qiymati.
Qayta ishlash xato
Hujjatni qayta ishlash bilan bog'liq xususiyatlar katta qiziqish uyg'otadi. Shunday qilib, parda mulkni qayta ishlash jarayonida yuzaga kelgan xato ma'lumotlarini o'z ichiga olgan xmldomparseerrseerrseerrroror ob'ektini qayta boshlaydi.
Xato ishlov beruvchini yozish uchun siz quyidagi kodni qo'shishingiz mumkin:
Var Xmmlerror: IXMDDOMEARSEVROR; ... xmldokc. yuk ('c: \\ ma'lumotlar \\ ma'lumot.xml'); Xmlerror: \u003d XMLDOC.PRORESEROR; Agar XMMLERROR.ERORDODODAN bo'lsa.<> 0 Keyin // // Bu erda biz xatoni qayta ishlaymiz // eslatish // boshqa xotira.Add (XMLDOC.XML); ... Xmldoc: \u003d nil;
Xato bo'lsa, qaysi ma'lumotlarni qaytarilishini bilish uchun quyidagi katalog elementini o'zgartiring:
yopilish elementini olib tashlash
Endi XMVMomparseerrroror xususiyatlarining xususiyatlarini qaytaradigan kodni yozing:
Xmlerror: \u003d XMLDOC.PRORESEROR; Agar XMMLERROR.ERORDODODAN bo'lsa.<> 0 Keyin XMMLEROR, MEMO1.LINChILAR QO'ShIMChA ('' fayl: '+ URL); Qo'shing ('kodi:' + stsenortr (xatolar kiritish)); Qo'shish ('Xato:' + Sabab); Qo'shish ('matn:' + srctext); Qo'shish ('satr:' + stsenortr (liniya)); Qo'shish ('pozitsiyasi:' + stsenortr (linepos)); Boshqa yozuvlar eslatma eslatma (XMLDOC.XML); Oxiri;
va bizning arizamizni bajaring. Natijada biz quyidagi xato ma'lumotlarini olamiz.
Yuqoridagi misoldan ko'rinib turibdiki, XMDDOMPARSERORRONRON ob'ekti tomonidan qaytarilgan ma'lumotlar xatoni mahalliylashtirish va uning paydo bo'lishining sababini tushunish uchun etarli.
Endi yopilish elementini tiklang
Hujjat daraxtiga kirish
Hujjat daraxtiga kirish uchun siz ildiz elementini olishingiz mumkin, keyin uning filialidan o'ting yoki ma'lum bir filialni topishingiz mumkin. Birinchi holda, biz xlimdomnod turini qaytaradigan hujjatlar mulki orqali ildiz elementini olamiz. Quyida har bir bola elementining tarkibini olish uchun hujjatlar mulkidan qanday foydalanish kerakligi ko'rsatilgan:
Var tugun: IXMLDOMNOD; Ildiz: IXMLDOMILE; I: butun son; ... ildiz: \u003d XMLDOC.DOCKOMUM; I: \u003d 0 uchun 0 gacha .Langhnodes.Langh-1 ni boshlang: \u003d ildiz.childnodes.item [i]; Memo1.Lines.Add (nododext); Oxiri;
Bizning XML hujjatimiz uchun biz quyidagi matnni olamiz.
Agar biz birinchi sho''ba korpusidan past bo'lgan biron bir o'ziga xos filial yoki filial darajasiga qiziqsak, biz na Nadefroid usuli yoki XMLDOMDOCTHING ob'ektining Getelement-ning usulidan foydalanishimiz mumkin.
Nadefroid usuli XML sxemada aniqlangan noyob identifikatorni yoki hujjat turini aniqlash (DTD) ni aniqlash va ushbu identifikator bilan filialni qaytarishni talab qiladi.
Getelementbytagname usuli ma'lum bir element (yorliq) bilan satrni ko'rsatadi va ushbu mahsulot bilan barcha filiallarni qaytarishni talab qiladi. Quyida CD-ROM katalogida barcha ijrochilarni topish uchun ushbu usuldan qanday foydalanish kerakligi ko'rsatilgan:
Tugunlar: IXMLDOMNODEST; Tugun: ixmldomnode; ... tugunlari: \u003d XMLDOC.JEGREYTREYTYTRYAMETYALASH ('Rassom'); Men: \u003d 0 tugun-1 ni boshlang. \u003d Kodes.item [i]; Memo1.Lines.Add (nododext); Oxiri;
XML hujjatimiz uchun biz quyidagi matnni olamiz.
E'tibor bering, XMLLDOMNODE TANLANGAN TANLANGAN TANLANGAN TANLANGAN TANLANGAN TANLANGAN TANLANGI Hujjatlar tarmoqlariga kirishning yanada moslashuvchan usulini taqdim etadi. Ammo bu biroz pastroq.
Hujjat filiali - XMLLDOMNOD ORUS
XMLLDOMNOD OBUVIY OBUVA FAQATI. Biz ushbu ob'ektni hujjatning ildiz eleli olinganda, biz allaqachon duch kelganmiz:
Ildiz: \u003d XMLDOC.DOCKOMUM;
XML hujjatining filialida ma'lumot olish uchun siz XMLLDOMNOD ob'ektining xususiyatlaridan foydalanishingiz mumkin (1-jadval).
Filialda saqlanadigan ma'lumotlarga kirish uchun odatda nodevalue mulkidan foydalanadi (ishlov berish va CDATA bo'limlari uchun ko'rsatmalar, sharhlar va CDATA bo'limlari uchun mavjud) yoki nodetampedvalue mulkini qaytaradigan matn mulki. Ikkinchisi, faqat kiritilgan elementlar bilan filiallar uchun ishlatilishi mumkin.
Hujjat daraxtida harakatlanish
XMLLDOMNOD OBUS Hujjat daraxti orqali harakatlanishning turli usullarini ta'minlaydi. Masalan, ota-onalar filialiga kirish uchun, ota-onalar mulki qo'llanilishi, bolalarning filiallariga kirish (Xmldchild turi), Bolalik xususiyatlari (XMLDMOMNODE turi), birinchi bo'lib, oxirgi va xlldomnode turlari) orqali amalga oshiriladi. Uskuna mulki XML hujjatli xususiyatini aniqlaydigan XMLDOCKUS ob'ektini qaytaradi. Yuqoridagi xususiyatlar hujjat daraxtidan o'tishni osonlashtiradi.
Endi men XML hujjatining barcha filiallarini engaman:
Ildiz: \u003d XMLDOC.DOCKOMUM; I: \u003d 0 uchun 0 gacha .Langhnodes.Langh-1 ni boshlang: \u003d ildiz.childnodes.item [i]; Agar node.hassdondnods keyin getchilds (tugun, 0); Oxiri;
Yuqorida aytib o'tilganidek, XMLDOMNODE Ob'yektori XMLDOMNODE Ob'yektori hujjatning tarmoqlariga kirishning yanada moslashuvchan usulini taqdim etadi. Bundan tashqari, hujjatning birinchi filialini qaytaradigan tanlash usuli mavjud. Ushbu ikkala usul ham filiallarni qidirish uchun XSL shablonlarini belgilashga imkon beradi.
CD filiali va inflyatsiyasiga ega bo'lgan barcha filiallarni olish uchun tanlangan tanlanganlar usulidan foydalanish jarayonini ko'rib chiqing.
Ildiz: \u003d XMLDOC.DOCKOMUM; Tugunlar: \u003d ildiz.Selectnodes ('CD / narx');
Modes kolleksiyasini barcha CD filiallari joylashtiriladi. XSL shablonlarini muhokama qilish biroz keyinroq qaytib keladi.
Qizlar filiallari tomonidan boshqariladigan manipulyatsiya
Sho'balarni manipulyatsiya qilish uchun biz XMLLDOMNOD Ob'ektining usullaridan foydalanishimiz mumkin (2-jadval).
Birinchi disk yozuvini to'liq o'chirish uchun quyidagi kodni bajarishingiz kerak:
Var Xmldoc: IXMLDOMDOD; Ildiz: IXMLDOMNOD; Tugun: ixmldomnode; XMLDOC: \u003d CodomDocument.Creatum; XMLDOC.ASYC: \u003d FALSE; XMLDOC.OG ('c: \\ ma'lumot \\ ma'lumot.xml'); // ildiz elementi ildizini oling: \u003d XMLDOC.DOCKOMUM; Tugun: \u003d ildiz; // Birinchi sho''ba korxonasini olib tashlang (Nodod.Firstgild);
Shuni esda tutingki, biz birinchi filialni olib tashlaymiz. Birinchi sho''ba korxonasining birinchi elementini qanday o'chirish kerak, quyida keltirilgan:
Var Xmldoc: IXMLDOMDOD; Ildiz: IXMLDOMNOD; Tugun: ixmldomnode; XMLDOC: \u003d CodomDocument.Creatum; XMLDOC.ASYC: \u003d FALSE; XMLDOC.OG ('c: \\ ma'lumot \\ ma'lumot.xml'); // ildiz elementi ildizini oling: \u003d XMLDOC.DOCKOMUM; // va birinchi yordamchi tugun: \u003d Root.Firstchild; // Birinchi sho''ba korxonasini olib tashlang (Nodod.Firstgild);
Yuqoridagi misolda biz birinchi filialni olib tashlamadik.
Endi yangi filial qo'shing. Quyida CD-ROM musiqiy musiqiy yozuvini qanday qo'shish kerakligini ko'rsatadigan kod:
Var NewNode: IXMLDOMNOD; Bola: IXMLLDOMNOD; ... // yangi filial yarating -
Yuqoridagi kod Yangi bo'lim qo'shish uchun quyidagi harakatlar ketma-ketligini ko'rsatadi:
- Createnode yordamida yangi filial yaratish:
- createnode usuli yordamida element yaratish;
- append tugagan usuli bilan filialga elementni qo'shish;
- matnli mulk orqali elementning qiymatini belgilash;
- ... barcha narsalar uchun takrorlang.
- Hujjatga yangi filialni ilova tomonidan qo'shing.
Eslatib o'tamiz, ilova qilish usuli daraxtning oxirida novda qo'shadi. Biror daraxtning o'ziga xos joyiga filial qo'shish uchun siz o'rnatilgan usuldan foydalanishingiz kerak.
Filiallar to'plami - XMLDOMNODELISTYISTYI
XMLNOLLIST Ob'ektida tanlangan fayllar yoki getelinsmapagname usullaridan foydalanish mumkin bo'lgan filiallar ro'yxati keltirilgan va shuningdek, bolalarga xos bo'lgan mulkka ega.
Biz ushbu ob'ektdan "Hujjat daraxtida harakatlanayotgan" bo'limida ko'rsatilgan misolda biz allaqachon ko'rib chiqdik. Bu erda biz ba'zi nazariy sharhlar beramiz.
Ro'yxatdagi filiallar soni uzunlikdagi mulkning qiymati sifatida olinishi mumkin. Filiallar 0 dan uzunligi 0 gacha indekslarga ega va har bir alohida filial tegishli indeks bilan buyumlar qatoridagi massiv elementi orqali mavjud.
Filiallar ro'yxatiga o'tish, shuningdek, joriy filialning ikkinchisi bo'lsa, ro'yxatdagi yoki nilni qaytaradigan keyingi filialni ishlatishingiz mumkin. Ro'yxatning yuqori qismiga qaytish uchun siz tiklash usulini chaqirishingiz kerak.
Hujjatlarni yaratish va tejash
Shunday qilib, biz Mavjud XML hujjatlariga tarmoqlar va elementlarni qanday qo'shishingiz mumkinligini ko'rib chiqdik. Endi XML hujjatini "Chivinda" yarating. Avvalo, hujjat nafaqat URL-ga, balki odatiy simli yukni ham yuklashini eslatamiz. Quyida qolgan elektr elementini qanday yaratish mumkinligi ko'rsatilgan, qolgan elementlarni dinamik ravishda qurish uchun sarflash (biz allaqachon "Shaxsiy filiallarni manipulyatsiya bo'limida ko'rib chiqdik"):
Var Xmldoc: IXMLDOMDOD; Ildiz: IXMLDOMNOD; Tugun: ixmldomnode; S: keng o'rinni keng ... S: \u003d '
XML hujjatini qurgandan so'ng, uni Saqlash usuli yordamida faylda saqlang. Masalan:
XMLDOC.Savsi ('c: \\ negrd.xml');
Faylni saqlashdan tashqari, Saqlash usuli XML hujjatni yangi XMLDOOMDOCK ob'ektida saqlash imkonini beradi. Bunday holda hujjat to'liq ishlov berish va natijada uning tuzilishi va sintaksisini tekshirish. Quyida hujjatni boshqa ob'ektda qanday saqlash kerakligi ko'rsatilgan:
TFFR1.Button2click (jo'natuvchi: tog '); Var Xmldoc2: IXMLDOMDOD; XMLDOC2: \u003d CodomDocumentencume-ni boshlang; XMLDOC.Savsi (XMLDOC2); Memo2.Lins.Add (XMLDOC2.XML); ... Xmldoc2: \u003d nil; oxiri;
Xulosa qilib aytamiz, tejash usuli, shuningdek, XML hujjatni ISTREAM, ISESSREAM yoki IPESCistreaminit interfeyslarini qo'llab-quvvatlaydigan boshqa com ob'ektlarga saqlash imkonini beradi.
XSL shablonlaridan foydalanish
XMLLDOMNOD Ob'ektni tanlash usulini muhokama qilish, biz hujjatning shoxlariga kirishning yanada moslashuvchan usulini taqdim etishini eslatdik. Moslashuvchanlik, filiallarni tanlash mezoni sifatida siz XSL shablonini belgilashingiz mumkin. Bunday shablonlar XML hujjatlarida ma'lumotlarni qidirish uchun kuchli mexanizmni ta'minlaydi. Masalan, bizning katalogidagi CD-ROM musiqiy CD-ROM musiqiy CD-ROM nomlarini olish uchun siz quyidagi so'rovga amal qilishingiz mumkin:
Amerika Qo'shma Shtatlarida ijrochilarning disklari chiqarilishini bilish uchun, so'rov quyidagicha shakllanadi:
Tugunlar: \u003d ildiz.Selectnodes ('CD / rassom');
Quyida katalogdagi birinchi diskni qanday topish mumkinligi ko'rsatilgan:
Tugunlar: \u003d ildiz.Selectnodes ('CD / sarlavhasi');
va oxirgi:
Tugunlar: \u003d ildiz.Selectnodes ('CD / sarlavhasi');
Bob dilanning disklarini topish uchun siz quyidagi so'rovni bajarishingiz mumkin:
Tugunlar: \u003d ildiz.SelectNodes ('cd [$ CD $ CD \u003d "Bob Dylan"] / Sarlavha');
1985 yildan keyin chiqarilgan disklar ro'yxatini olish uchun biz quyidagi so'rovni amalga oshiramiz:
Tugunlar: \u003d ildiz.Selectnodes ('CD / sarlavhasi');
XSL sintaksisining batafsilroq muhokama qilinishi alohida nashrni talab qiladi. O'quvchilarni qiziqtiruvchi va qo'shimcha tadqiq o'tkazish uchun men XSLdan foydalanishning faqat bitta kichik misolini beraman. Aytaylik, biz sizning katalogimizni odatiy HTML jadvalga o'zgartirishimiz kerak. An'anaviy usullardan foydalanish, biz barcha daraxt shoxlarini va tegishli teglarni shakllantirish uchun olingan har bir narsa uchun saralashimiz kerak
XSL-dan foydalanish biz shunchaki shablon (yoki uslub jadvalini) yaratamiz, unda biz nima va qanday aylantirishni ko'rsatamiz. Keyin biz ushbu shablonni bizning katalogimizga joriy qilamiz - va katalogni stolga o'zgartiradigan XSL shablonining matni (listing 2).
XSL shablonini bizning katalogimizga katalogimizga o'xsha:
TFFR1.Button2click (jo'natuvchi: tog '); Var Xsldoc: IXMLDOMDOCKANING; XSLDOCni boshlang: \u003d CodomDocument. Xsldvolc. yuk ('c: \\ ma'lumot \\ ma'lumot.xsl'); Memo2.Text: \u003d Xmldoc.TransforodNode (XSDDOC); XSLDOC: \u003d nil; oxiri;
XSL muhokamasini yakunlab, hozirgi paytda ushbu XML hujjatlari, shuningdek formatlashni formatlash uchun faol foydalaniladi.
Xulosa
Bu aniq sabablarga ko'ra, bitta maqolada barcha Microsoft XML DOM Ob'ektlarini hisobga olish mumkin emas va ulardan foydalanishning misollarini keltirib chiqaradi. Bu erda biz faqat XML DOM dan foydalanishning asosiy masalalariga arizalarda foydalanishimiz kerak. Yorliqda. 3 Microsoft XML Dom-da amalga oshirilgan barcha ob'ektlarni ko'rsatadi.
12 "2000"
Delphi-dagi vazifalarni hal qilish
Delphi - bu o'quv jarayonida talabalar ko'pincha tanish bo'lgan ikkinchi dasturlash tili. Bu ob'ektga yo'naltirilgan dasturlashning boshlanishi. Men, talaba sifatida o'zim uchun kalkulyator yozishdan ko'ra, tilni o'zlashtirish uchun oson usul yo'qligini xulosa qilaman. Agar siz ikkita raqam qo'shinining elementar funktsiyasini anglasangiz ham, bu allaqachon juda ko'p yorug'lik bilan.
CodeGreear, Delphiear 7, Lazar har xil kompilyator, siz uni zoligi va bittasiga aylantiruvchi mashina kodiga o'tkaziladigan dasturlar. Bularning barchasi dasturlarni yaratish bo'yicha dasturlar va dasturlash tillarini alohida emas. Ushbu kompilyonlar delphi tiliga o'xshash delphi tilidagi delphi tilidan foydalanib, odatdagidek paskalga o'xshash sintakka o'xshash, ammo funktsional jihatdan boshqacha.
Dasturlash tili sintaksisi nima?
Bu turli operatorlarni yozish formati. Masalan, Paskalda "uchun" tsiklda quyidagi format mavjud: "n: \u003d 1 dan k ish" va boshqalarga.
C ++ dasturlash tilida bir xil tsikl biroz boshqacha yozilgan: uchun (n \u003d 1; n Biz kalkulyator yozamiz
Bu sizga dastur kodi bilan bog'liq ob'ektlar o'zaro ta'sirga ega, matematik funktsiyalar qanday ishlashini tushunishga yordam beradi. Har qanday holatda barcha dasturlash hisob-kitob bo'ladi. O'yin, shuningdek, biror narsani doimo deb hisoblaydigan, raqamlar va raqamli funktsiyalar bilan ishlaydi. Dasturlash matematikada ajralmasdir.
Biz Lazarni rivojlantirish muhitini yozish uchun foydalanamiz. Uning funksionalligi, aytganidek boy emas, deydi kodegar, ammo u bepul kirishdir va o'qish uchun mo'ljallangan.
Rivojlanish muhitini ochish, biz elementlarning shakli va panelini ko'ramiz. Bu shakl.
Bu erda element paneli.
Birinchi narsa biz ikkita raqamning qo'shimcha funktsiyasini amalga oshirish uchun uchta narsani qo'shing. Bizga: "TEDIT" uchta bo'lak va "tlutton" sonida. Quyidagi rasmda ular o'q panellarida ko'rsatilgan. Ularni bir marta bosing, so'ngra bir marta shaklda va ularda paydo bo'ladi.
Bular kiritish uchun matn maydonlari va oddiy tugmalar. Siz deyarli har qanday Windows dasturi yordamida ushbu elementlarga duch kelasiz. Qarab qo'ymoq.
Endi ushbu yozuvlarni tozalang. Ko'rish oynasini bosing. Va "Ob'ektlar inspektori" ni bosing. Ushbu oynani paydo bo'ladi.
Formada "tugma" elementida bir marta bosing va "sarlavhani" qiymatini boshqalarga boshqa raqamga o'zgartirish. Masalan, "OK" so'zida. Enter ni bosing. Biz shaklni ko'ramiz, chunki element nomni o'zgartirdi.
Faqat o'zgartirilmay, uni tahrir qilmang, lekin biz ularni hech qanday tarkibsiz qilamiz. Biz ularni o'z navbatida ta'kidlaymiz va inspektorda matn qiymatini tozalaymiz. Enter ni bosishni unutmang.
Natijaga ko'ra, bizning formamiz shunday ko'rinadi.
Endi bizning kalkulyatori topilgunga qadar, siz bizning tugmachasini biz uchun zarur dasturiy kodni ro'yxatdan o'tkazishingiz kerak. Tugmani ikki marta bosing va manba muharririni oching.
Qarangmi? Tugmachasini bosing. Bu tugmachani bir marta bosganimizda nima sodir bo'lishi uchun javobgardir. Va quyidagilar yuzaga kelishi kerak: Dastur uchinchi tahrirda, dastlabki ikki sohaga kiritilgan raqamlarning yig'indisini olib kelish uchun kerak. Biz kodni yozamiz.
Biz yozishimiz kerak bo'lgan bunday oddiy 5 satr. Yuqoridagi rasmda sharhlar va tushuntirishlar ko'rinadi. Shundan so'ng ushbu tugmani bosing.
Bizning loyihamizni tuzish tuziladi. U dasturda yig'iladi. Biz birinchi ikki sohada raqamlarni kiritamiz, tugmani bosing va miqdorning qiymatini oling.
Xulosa
Siz "Fayl" tugmachasini bosishingiz mumkin, shunda "Hamma narsani saqlab qo'ying", saqlash uchun papkani tanlang va siz ish stolidan amalga oshirilishi mumkin. Endi dastur ikki raqamga bo'linishi uchun ushbu kodni qayta yozish kerakligini o'zingiz aniqlashga harakat qiling, va katlanmaydi. Maslahat: Ma'lumotlar turini o'zgartirishingiz kerak. Quyidagi video shunga o'xshash misolni ko'rsatadi, ammo Lazar emas, delfi 7-da.
Ko'plab delphi dasturchilari, saqlash sozlamalarini tejash bilan bog'liq II. Dasturlaridagi fayllar. Ushbu usuldan kam jiddiy loyihalarda foydalanish, bunda moslashuvchanlik cheklanganligi sababli, moslashuvchanlikni cheklashning oldini olish kerak, bu esa dasturni yanada kengaytirishiga to'sqinlik qiladi. Bunday yondashuvni rivojlantirish qulayligi va rivojlanish muhitida o'rnatilgan mablag'larning mavjudligi tufayli bunday yondashuv juda mashhur deb ta'kidlashadi.
Biroq, dastur sozlamalarini saqlash uchun ideal variant tuzilgan Xml Fayllar. Ularning afzalligi shundaki, parametrlar soni deyarli o'rnatilishi mumkin emas. Buni yaxshiroq tushunish uchun aniq misolni ko'rib chiqing.
Urug'lantiruvchi dasturda, yozishni bosganingizda kontekst menyusi ko'rinadi, bu ballar ro'yxatini ko'rsatadi. Ushbu elementlar o'z navbatida Sozlamalar faylidan yuklab olinadi. Agar sozlamalar saqlangan bo'lsa II. Fayl, dastur ma'lum miqdordagi buyruqlarni tejash va yuklashi mumkin. Masalan 10 yoki 50. Sizga muhim bo'lsa, siz kodni qayta yozishingiz va shunga mos ravishda qayta tuzishingiz kerak.
Yordamida yondashuvni qo'llash Xml Fayllar, biz bo'limning barcha parametrlarini jadal holda yuklab olish imkoniyatiga ega bo'lamiz. Buning uchun konfiguratsiya fayli yanada oqilona bo'lib qoladi, parametrlarni ortiqcha raqamlashsiz. Biroq, bilan ishlash uchun standart vositalar Xml Delphi ko'p kamchiliklarga ega, shuning uchun Standart kutubxonadan foydalanishni maslahat beraman Msxml. Odatda bu Windows oilasi tizimlarining asl qismi.
Ulanish uchun MsxmlBiz barcha funktsiyalar ro'yxatini barcha funktsiyalar ro'yxatiga kiritishimiz kerak. Interfeysni qanday qilib import qilish kerak batafsil maqolalar yozilmagan, men faylni yuklab olishni taklif qilaman Msxml2_tlb.pas. Allaqachon foydalanishga tayyor. Fayl yuklab olingandan so'ng, uni o'zingizning loyihangizning yonida joylashtiring yoki Delphi Lib papkasiga tashlang. Shunday qilib, yaratilgan barcha dasturlar moduldan foydalanish imkoniyatiga ega bo'ladi. Msxml, MSXML2_TLB-ni foydalangan holda qo'shish kifoya.
Aniqlik uchun ushbu kutubxonaning quyidagi misolini ko'rib chiqing:
Jaroratni boshqarish; Var Xmldoc: domdomen; Ildiz: IXMLDOMILE; XMLDOCni boshlang: \u003d CodomDocument.Creatum; XMLDOC.OL ("YOSHINS.XML"); Ildiz: \u003d XMLDOC.DOCKOMUM; Showmessage ("o'lcham / kengligi"). Matnli; Ildiz: \u003d nil; XMLDOC: \u003d nil; oxiri;
Birinchidan, dona domdom klassining misoli yaratildi, shundan so'ng sozlamalar.xml fayl xotiraga yuklanadi. Har qanday standartga ko'ra Xml Faylda ildiz tegini o'z ichiga olishi kerak (bu holatda konfigural), keyin biz uni funktsiyadan foydalanishimiz kerak Hujjatlar. Keyin teglar orasidagi tarkibning mazmuni
Bu erda saralash usuli qo'llaniladi, bu satrni parametr sifatida oladi.