XML jezik se sve više koristi za pohranu informacija, dijeljenjem između aplikacija i web čvorova. U mnogim se aplikacijama ovaj jezik koristi kao osnovno pohranjivanje podataka u drugima - za izvoz i uvoz XML podataka. Iz ovoga slijedi da je vrijeme za programere razmišljati o tome kako koristiti XML podatke u vlastitim primjenama.
U ovom ćemo članku razmotriti XML dokument Objekt modela (DOM) i njegovu implementaciju Microsofta - Microsoft XML dom.
XML DOM je objektni model koji omogućava programerima za preuzimanje i obradu XML datoteka. Model objekta sastoji se od sljedećih glavnih objekata: XMlDomDocument, XMlDomnoDelist, XMldoMNODE, XMLDOMNAMEDNODEMAP i XMLDomparseError. Svaki od ovih objekata (osim XMLDomparseError) sadrži svojstva i metode za dobivanje informacija o objektu, manipuliraju vrijednostima i strukturom objekta, kao i pomjera duž XML strukture dokumenata.
Razmotrite glavne objekte XML Doma i dajte nekoliko primjera njihove upotrebe u Borland Delphiju.
Korištenje XML dom u Borland Delphi
Da biste koristili Microsoft XML dom u Delphi aplikacijama, morate povezati odgovarajuću biblioteku tipa u projekt. Da biste to učinili, izvršimo projekat | Biblioteka tipa uvoza i u dijaloškom ploč za biblioteku uvoza u biblioteku uvoza odaberite biblioteku Microsoft XML verzije 2.0 (verzija 2.0), koja se obično nalazi u datoteci Windows \\ System \\ MSXML.DLL
Nakon pritiska na tipku CREATE jedinice će se stvoriti MSXML_TLB Modul Interfejs, koji će nam omogućiti upotrebu XML Dom objekata: DomDocument, XMldocument, XMLHttPrquest i brojne druge primijenjene u biblioteci MSXML.DLL. Veza na MSXML_TLB modul mora biti naveden na popisu upotrebe.
XML DOM uređaj
Model objekta dokumenata predstavlja XML dokument u obliku konstrukcije drveća koji se sastoji od grana. XML Dom Softverska sučelja omogućavaju aplikacijama za navigaciju stabla dokumenta i manipuliranje svojim granama. Svaka grana može imati određenu vrstu (domnodeType), prema kojem se određuju roditelj i podružnice. U većini XML dokumenata možete pronaći grane elemenata, atributa i tekstovnih grana. Atributi (atribut) su posebna vrsta ogranka i nisu podružnice. Upravljanje atributom koristi posebne metodeObezbedili su XML Dom objekti.
Pored implementacije sučelja za preporučene World Wide Web Conzorcijum (W3C), Microsoft XML dom sadrži metode koji podržavaju XSL, XSL uzorke, imena i vrste podataka. Na primjer, metoda SelectNodes omogućava vam korištenje sintaksa XSL predložaka (XSL sintaksa uzorka) za pretraživanje grana u određenom kontekstu, a metoda transformacije podržava upotrebu XSL za obavljanje transformacija.
Ispitajte XML dokument
Kao primjer XML dokumenta, uzmite katalog muzičkog CD-ROM-a koji ima sljedeću strukturu:
Sada smo spremni da počnemo s obzirom na model objekta XML dom, poznanstvo s kojim će započeti s objektom XMldoMDocument.
XML dokument - XMlDomDocument objekt
Rad sa XML dokumentom započinje svojim preuzimanjem. Da biste to učinili, koristimo metodu opterećenja koja ima samo jedan parametar koji označava URL preuzetog dokumenta. Prilikom preuzimanja datoteka s lokalnog diska, specificira se samo puni naziv datoteke (datoteka: /// protokol u ovom slučaju može se izostaviti). Ako se XML dokument pohranjuje kao niz, metoda LoadXML treba koristiti za preuzimanje takvog dokumenta.
Za kontrolu metode preuzimanja dokumenta (sinhrona ili asinhrona), koristi se nekretnina asinc. Po defaultu je ta nekretnina tačna, što ukazuje da je dokument učitao asinhrono, a kontrola se vraća na aplikaciju čak i dok se dokument ne učita u potpunosti. U suprotnom, dokument se učitava sinkrono, a zatim morate provjeriti vrijednost Readystate imovine da biste saznali, dokument učitan ili ne. Također možete stvoriti rukovatelj događaja OnreadyStateChange koji će dobiti kontrolu prilikom promjene vrijednosti The Readystate nekretnine.
Ispod je prikazano kako preuzeti XML dokument pomoću metode opterećenja:
Korisnici ... MSXML_TLB ... Postupak TFORM1.Button1click (pošiljalac: Togject); Var xmldoc: ixmldomdocument; Započnite XMLDOC: \u003d codroomdocument.create; Xmldoc.async: \u003d false; Xmldoc.load ('c: \\ podaci \\ podaci.xml'); // // Evo kôda koji manipulira // XML dokument i njene grane // XMLDOC: \u003d Nil; kraj;
Nakon što se dokument učita, možemo se odnositi na njena svojstva. Stoga će nekretnina namijenjene nodena namijenjena vrijednost #Document, nekretnina nodetipunja je vrijednost dokumenta, url svojstvo je datoteka: /// c: /data/data.xml Vrijednost.
Obrada je greška
Posebno su nekretnine povezane s obradom dokumenta kada se učitava. Dakle, imovina ParseError vraća XMLDomparseerrorRors objekt koji sadrži podatke o pogrešci koje su se dogodile tijekom procesa obrade.
Da biste napisali obradu grešaka, možete dodati sledeći kod:
Var XMLERROR: IXMLDomparseError; ... xmldoc.load ('c: \\ podaci \\ podaci.xml'); XMLERROR: \u003d xmldoc.parseerError; Ako je xmlerRorr.Errorcode.<> 0 tada // // Ovdje obrađujemo grešku // ostalo memo1.lines.add (xmldoc.xml); ... xmldoc: \u003d nil;
Da biste saznali koje se informacije vraćaju u slučaju pogreške, promijenite sljedeću stavku direktorija:
uklanjanje zatvaranja elementa
Sada napišite kôd koji vraća svojstva XMLDomparseerrror objekta:
XMLERROR: \u003d xmldoc.parseerError; Ako je xmlerRorr.Errorcode.<> 0 Zatim sa XMLERROR, memo1.Lines počinju dodati ('file:' + URL); Dodajte ('kod:' + inttoststr (errorcode)); Dodaj ('greška:' + razlog); Dodajte ('Tekst:' + SRCTEXT); Dodajte ('red:' + inttostr (linija)); Dodajte ('Pozicija:' + InttostR (linija)); Kraj drugog memo1.lines.add (xmldoc.xml); Kraj;
i ispuniti našu prijavu. Kao rezultat toga, dobivamo sljedeće podatke o pogrešci.
Kao što se može vidjeti iz gornjeg primjera, informacije koje je vratio XMLDomparseError objekt su dovoljni da lokaliziraju grešku i razumjeli razlog za njegovu pojavu.
Sada vratite zatvor
Pristup stablu dokumenta
Da biste pristupili stablu dokumenta, možete dobiti ili korijenski element, a zatim proći kroz svoje podružnice ili pronaći određenu granu. U prvom slučaju dobivamo korijenski element kroz imovinu dokumentacije, koja vraća predmet tipa XMldoMNODE. Ispod je prikazano kako koristiti svojstvo dokumentacije za dobijanje sadržaja svakog dječijeg elementa:
Var čvor: ixmldoomnode; Korijen: ixmdomelement; I: Celomenik; ... root: \u003d xmldoc.documentelement; Za i: \u003d 0 do root.childNodes.Length-1 počinju čvor: \u003d root.childDodes.item [i]; Memo1.lines.add (node.text); Kraj;
Za naš XML dokument dobivamo sljedeći tekst.
Ako nas zanima neka vrsta posebne grane ili grane ispod prvog podružnice, možemo koristiti ili na metodu čvorišta ili getelementbytagname metodu XMlDomDocument objekta.
Metoda NudeFromid zahtijeva navođenje jedinstvenog identifikatora definiranog u XML shemi ili definiciji tipa dokumenta (DTD) i vraća granu s ovim identifikatorom.
Metoda Getelmentbytagname zahtijeva pokazatelj niza sa specifičnim elementom (oznakom) i vraća sve grane s ovom stavkom. Ispod je prikazano kako koristiti ovu metodu za pronalaženje svih izvođača u našem CD-ROM imeniku:
Čvorovi: ixmldoomnodelist; Čvor: ixmldoomnode; ... čvorovi: \u003d xmldoc.gerentmentBytagname ('umjetnik'); Za i: \u003d 0 do čvorova.Length-1 počinju čvor: \u003d čvorovi.item [i]; Memo1.lines.add (node.text); Kraj;
Za naš XML dokument ćemo dobiti sljedeći tekst.
Imajte na umu da XMlDomnode SelectNodes metoda pruža fleksibilniji način za pristup granama dokumenta. Ali o tome je nešto niže.
Podružnica za dokumente - XMLDomnode objekt
Objekt XMlDomnode je filijala dokumenta. Već smo naišli na ovaj objekt kada je dobijen korijenski element dokumenta:
Root: \u003d xmldoc.documentelement;
Da biste dobili informacije o filijali XML dokumenta, možete koristiti svojstva XMlDomnode objekta (Tabela 1).
Da biste pristupili podacima pohranjenim u grani, obično koriste nekretninu nodevalue (dostupno za atribute, tekstualne grane, komentare, upute za preradu i dijelove CDATA) ili tekstualnoj nekretnini koja vraća sadržaj teksta ili svojstvo nodetipedvalue. Potonji se, međutim, može koristiti samo za grane sa tipkanim elementima.
Kretanje na stablu dokumenta
Objekt XMlDomnode pruža razne načine za pomicanje kroz stablo dokumenta. Na primjer, za pristup roditeljskoj grani koristi se nekretnina parencijana, pristup dječjim granama vrši se kroz dječju nekretnine (XMLDCHID tip), prvog i andronchild (tip xmldoomnode) itd. Vlasnička imovina vraća objekt XMldocument koji identificira sam XML dokument. Gore navedena svojstva olakšavaju se kretanje kroz stablo dokumenta.
Sada ću prevladati sve grane XML dokumenta:
Root: \u003d xmldoc.documentelement; Za i: \u003d 0 do root.childNodes.Length-1 počinju čvor: \u003d root.childDodes.item [i]; Ako je čvor.HaschildNodes, a zatim Getchilds (čvor, 0); Kraj;
Kao što je gore navedeno, SelectNodes objekt XMlDomnode pruža fleksibilniji način pristupa granama dokumenta. Pored toga, postoji metoda SelectsingLende koja vraća samo prvu granu dokumenta. Obje ove metode omogućavaju vam da odredite XSL predloške za traženje grana.
Razmotrite postupak korištenja metode SelectNodes za izdvajanje svih grana koje imaju CD granu i inflaciju.
Root: \u003d xmldoc.documentelement; Čvorovi: \u003d root.electornodes ('CD / Cijena');
Kolekcija čvorova bit će postavljena sva pogodna cijena CD-a CD-a. Rasprava o XSL predlošcima vratit će se malo kasnije.
Manipulacija kćerki granama
Za manipulaciju podružnicama možemo koristiti metode XMlDomnode objekta (Tabela 2).
Da biste u potpunosti izbrisali zapis prvog diska, morate izvesti sljedeći kod:
Var xmldoc: ixmldomdocument; Root: ixmldoomnode; Čvor: ixmldoomnode; Xmldoc: \u003d codromdocument.create; Xmldoc.async: \u003d false; Xmldoc.load ('c: \\ podaci \\ podaci.xml'); // nabavite korijen korijenskog elementa: \u003d xmldoc.documentelement; Čvor: \u003d root; // uklonite prvu podružnu čvoru.removechild (čvor.firstchild);
Imajte na umu da u ovom primjeru uklanjamo prvu podružnicu. Kako ukloniti prvi element prvog podružnice, prikazan je u nastavku:
Var xmldoc: ixmldomdocument; Root: ixmldoomnode; Čvor: ixmldoomnode; Xmldoc: \u003d codromdocument.create; Xmldoc.async: \u003d false; Xmldoc.load ('c: \\ podaci \\ podaci.xml'); // nabavite korijen korijenskog elementa: \u003d xmldoc.documentelement; // i prvi podružni čvor: \u003d root.firstchild; // uklonite prvu podružnu čvoru.removechild (čvor.firstchild);
U gornjem primjeru nismo uklonili prvu granu.
Sada dodajte novu granu. Ispod je kod koji prikazuje kako dodati novi zapis muzičkog CD-ROM-a:
Var Newnode: ixmldoomnode; Dijete: ixmldoomnode; ... // Kreirajte novu granu -
Navedeni kôd prikazuje sljedeći niz radnji za dodavanje nove grane:
- Izrada nove grane pomoću Createnoda:
- izrada predmeta pomoću metode Createnode;
- dodavanje elementa na granu metodom pripadnice;
- postavljanje vrijednosti elementa putem tekstualne imovine;
- ... ponovite za sve stavke.
- Dodavanje nove grane u dokument dodatkom.
Podsjetimo da metoda pripadnica dodaje granu na kraju stabla. Da biste dodali podružnicu na određeno mjesto stabla, morate koristiti Inselbe Foretore metodu.
Set podružnica - XMlDomnoDelist objekt
XMLNODELIST Objekt sadrži popis grana koji se mogu izgraditi pomoću metoda bicklenodes ili getElementsbytagname i dobiva se i iz imovine dječjeg djece.
Već smo razmotrili upotrebu ovog objekta u primjeru dat u odjeljku "kretanje na stablu dokumenta". Ovdje također dajemo neke teorijske komentare.
Broj grana na popisu može se dobiti kao vrijednost nekretnine dužine. Podružnice imaju indekse od 0 do dužine-1, a svaka pojedinačna grana dostupna je putem elementa artikla artikla s odgovarajućim indeksom.
Kretanje na popisu grana može se izvesti i pomoću sljedećeg metode koja vraća sljedeću granu na popisu ili nulu, ako je trenutna grana potonje. Da biste se vratili na vrh liste, trebali biste nazvati metodu resetiranja.
Stvaranje i ušteda dokumenata
Dakle, pogledali smo kako možete dodati grane i elemente postojećim XML dokumentima. Sada kreirajte XML dokument "u letu". Prije svega, podsjetit ćemo vas da se dokument može učitati ne samo iz URL-a, već i iz uobičajenog niza. Ispod je prikazano kako stvoriti korijenski element, koji se zatim može koristiti za dinamički izgraditi preostale elemente (koje smo već razmatrali u odjeljku "Manipulaciju podružnicama"):
Var xmldoc: ixmldomdocument; Root: ixmldoomnode; Čvor: ixmldoomnode; S: Widestring; ... S: \u003d '
Nakon izgradnje XML dokumenta, spremite ga u datoteku pomoću metode Spremi. Na primjer:
Xmldoc.save ('c: \\ \\ podaci \\ newcd.xml');
Pored spremanja u datoteku, metoda spremanja omogućava vam da sačuvate XML dokument u novom XMLDOMDocument objektu. U ovom slučaju, dokument je puna obrada i kao rezultat provjere njegove strukture i sintakse. Ispod je prikazano kako sačuvati dokument u drugom objektu:
Postupak TFORM1.Button2click (pošiljalac: Togject); Var xmldoc2: ixmldomdocument; Započeti xmldoc2: \u003d codromdocument.create; Xmldoc.save (xmldoc2); Memo2.lines.add (xmldoc2.xml); ... xmldoc2: \u003d nil; kraj;
Zaključno, napominjemo da metoda spremanja omogućava vam da uštedite XML dokument u druge COM objekte koji podržavaju Istream, Isetstream ili IpescesTreaminit sučelja.
Korištenje XSL predložaka
Rasprava o metodi XMlDomnode objekta SelectNodes, spomenuli smo da pruža fleksibilniji način pristupa granama dokumenta. Fleksibilnost leži u činjenici da kao kriterij odabir grana možete odrediti XSL predložak. Takvi predlošci pružaju snažan mehanizam za traženje informacija u XML dokumentima. Na primjer, kako biste dobili popis svih imena muzičkog CD-ROM-a u našem direktoriju možete slijediti sljedeći upit:
Da biste saznali da li su diskovi koji izvođači puštaju u Sjedinjenim Državama, zahtjev se formira na sljedeći način:
Čvorovi: \u003d root.electornodes ('CD / Artist');
Ispod je prikazan kako pronaći prvi disk u direktoriju:
Čvorovi: \u003d root.electornodes ('CD / naslov');
i zadnji:
Čvorovi: \u003d root.electornodes ('CD / naslov');
Da biste pronašli diskove Boba Dilana, možete izvesti sljedeći upit:
Čvorovi: \u003d root.electornodes ('CD [$ $ $ and $ arst \u003d "Bob Dylan"] / Naslov');
i za dobivanje liste diskova objavljenih nakon 1985. godine, izvršimo sljedeći upit:
Čvorovi: \u003d root.electornodes ('CD / naslov');
Detaljnija rasprava o XSL sintaksima zahtijeva zasebnu publikaciju. Za intrigiranje čitalaca i gurati dalje istraživanje, dat ću samo jedan mali primjer mogućeg korištenja XSL-a. Pretpostavimo da moramo pretvoriti naš direktorij na uobičajeni HTML tablicu. Iskoristite tradicionalne načine, moramo riješiti sve grane stabla i za svaku stavu dobivenu za formiranje odgovarajućih oznaka
Upotreba XSL-a, jednostavno kreiramo predložak (ili u stilskom tablicom), u kojem naznačimo šta i kako pretvoriti. Zatim ovaj predložak namećemo na naš katalog - i spreman: Prije nas tekst XSL predloška, \u200b\u200bkoji pretvara direktorij u tablicu (unošenje 2).
Kodeks za preklapanje XSL predloška u naš katalog izgleda ovako:
Postupak TFORM1.Button2click (pošiljalac: Togject); Var xsldoc: ixmldomdocument; Započnite xsldoc: \u003d codromdocument.create; Xsldoc.load ('c: \\ \\ \\ podaci \\ podaci.xsl'); Memo2.text: \u003d xmldoc.transformnode (xsldoc); Xsldoc: \u003d nil; kraj;
Popunjavanjem naše rasprave o XSL-u, treba reći da se trenutno ovaj jezik aktivno koristi za transformaciju između različitih XML dokumenata, kao i za formatiranje dokumenata.
Zaključak
Iz sasvim razumljivih razloga, u jednom je članku nemoguće razmotriti sve Microsoft XML dom objekte i donijeti primjere njihove upotrebe. Ovdje smo se dotakli samo na glavna pitanja korištenja XML Doma u aplikacijama. U kartici. 3 prikazuje sve objekte koji se implementiraju u Microsoft XML dom.
ComputerPress 12 "2000
Rešavanje zadataka na Delphiju
Delphi je drugi programski jezik kojim se studenti najčešće upoznaju u procesu učenja. Ovo je početak učenja objektno orijentiranog programiranja. Ja sam, kao student napravio za sebe zaključak da nema lakše metode za savladavanje jezika nego napisati kalkulator na njemu. Čak i ako realizirate elementarnu funkciju dodavanja dva broja, to je već na puno svjetla.
CodeGaear, Delphi 7, Lazarus je različiti prevodioci, programi koji će biti prebačeni u mašinski kod koji ste napisali, pretvarajući ga u zoliki i jednu. Ovo su svi programi za kreiranje programa, a ne zasebne programiranje jezika. Ovi prevodioci koriste objekt Pascal programski jezik koji se temelji na Delphi jezik, koji je sličan sintaksi sličan uobičajenom pascalu, ali je funkcionalan značajno drugačiji.
Šta je programska sintaksa jezika?
Ovo je format za pisanje različitih operatera. Na primjer, "Za" ciklus na Pascalu ima sljedeći format: "Za n: \u003d 1 do k do", itd.
Na programskom jeziku C ++ isti ciklus piše nešto drugačije: za (n \u003d 1; n pišemo kalkulator
Ovo će vam pružiti da shvatite kako su objekti sa programskim kodom koji su komunikacija, što je "varijable", kako djeluju matematičke funkcije. Sve programiranje u svakom slučaju bit će proračun. Igra je i program koji neprestano smatra nešto, radi sa brojevima i numeričkim funkcijama. Programiranje je nerazdvojno od matematike.
Koristimo za pisanje razvodnog okruženja Lazarus. Njegova funkcionalnost nije toliko bogata kao, recimo, Codegear, ali je besplatan pristup i dizajniran je za učenje.
Otvaranje razvojnog okruženja, vidimo oblik i panel elemenata. Evo oblika.
Evo ploče elementa.
Prvo što ćemo učiniti je dodati tri stavke koje je potrebno za implementaciju funkcije dodavanja dva broja. Trebamo: "Tedit" u broju tri komada i "TButton". Na slici u nastavku prikazani su na ploči sa strelicama. Kliknite na njih jednom, a zatim jednom u obliku, a oni se pojavljuju na njemu.
Ovo su tekstualna polja za ulaz i redovno dugme. Nailazite na ove elemente koristeći gotovo bilo koji Windows program. Pogledaj.
Sada očistite ove natpise. Kliknite karticu View. I kliknite na "Inspektore predmeta. Pojavit će se ovaj prozor.
Kliknite jednom na naš element "dugme" na obrascu i promijenite vrijednost "Natpis" u prozoru inspektora na bilo koji drugi. Na primjer, na riječ "u redu". Kliknite Enter. Vidimo na obrascu, jer je element promijenio ime.
Samo to učinite s uređivanjem, jednostavno se ne preimenujte, ali napravit ćemo ih bez ikakvog sadržaja. Izdvajamo ih zauzvrat i čišćenje tekstualne vrijednosti u inspektoru. Ne zaboravite da pritisnete Enter.
Prema rezultatu, naš obrazac izgleda ovako.
Sada kada je naš kalkulator zaradio, morate registrirati potrebni softverski kod za postupak našeg gumba. Kliknite na dugme dva puta i otvorite urednik izvora.
Vidite? Dugme1click postupak. Ovo je postupak koji je odgovoran za ono što se događa kada jednom kliknemo na tipku. A na sljedeće se moraju pojaviti: Program je potreban u trećem uređivanju kako bismo nam donijeli zbroj brojeva uvedenih u prva dva polja. Pišemo kod.
Takve jednostavne 5 redaka koda moramo napisati. Komentari i objašnjenja vidljivi su na gornjoj slici. Nakon toga kliknite ovo dugme.
Kompilacija našeg projekta bit će sastavljana. Sastavljat će se u programu. Upisujemo brojeve u prva dva polja, kliknite na gumb i ostvarite vrijednost iznosa.
Zaključak
Možete kliknuti gumb "Datoteka", a zatim "Spremi sve", odaberite mapu za spremanje i imat ćete punopravni program, od kojih se može započeti sa radne površine. Sada pokušajte sami shvatiti da morate prepisati u ovom kodu tako da se program podijeli sa dva broja, a ne presavijen. Savjet: Morate promijeniti tip podataka. Video u nastavku prikazuje sličan primjer, ali u Delphiju 7, ne Lazarus.
Mnogo Delphi programera, spremanje postavki su povezane koristeći Ini. Datoteke u svojim programima. Upotreba ove metode, u manje ozbiljnim projektima, potrebno je izbjeći, jer granice u fleksibilnosti, što sprečava daljnje širenje programa. Vrijedi reći da je takav pristup prilično popularan, zbog svoje jednostavne upotrebe i prisutnosti ugrađenih sredstava u razvojnom okruženju.
Međutim, idealna opcija za pohranu programskih postavki je strukturirana XML Datoteke. Njihova prednost je što broj parametara možda nije moguće popraviti. Da biste bolje razumjeli ovo, razmislite o određenom primjeru.
U programu opreme, kada kliknete na snimanje, pojavit će se kontekstni meni koji prikazuje listu bodova. Ove stavke su naredbe koje se zauzvrat preuzimaju iz datoteke postavki. U slučaju da su postavke pohranjene u Ini. Datoteka, program bi mogao uštedjeti i učitati određeni broj naredbi, na primjer 10 ili 50. Čim vam treba važnije, trebat ćete prepisati kôd i u skladu s tim, u skladu s tim, u skladu s tim, rezervacija.
Primjena pristupa pomoću XML Datoteke, imat ćemo mogućnost preuzimanja svih parametara odjeljka dinamički. Svem tome, konfiguracijska datoteka postat će elegantnija, bez pretjeranog numeriranja parametara. Međutim, standardni alati za rad sa XML Delphi ima mnogo nedostataka, pa preporučujem korištenje standardne biblioteke Msxml. Obično je to zadani dio sustava porodičnih sistema Windows.
Za povezivanje MsxmlMoramo formirati datoteku sučelja sa popisom svih funkcija uvozom iz COM servera. Kako uvoziti sučelje piše nije dovoljno detaljnih članaka, predlažem vam da preuzmete datoteku Msxml2_tlb.pas. Već spremna za upotrebu. Nakon preuzimanja datoteke, stavite ga pored svog projekta ili bacite u Delphi Lib Lib mapu. Dakle, svi stvoreni programi moći će koristiti modul. Msxml, Dovoljno je dodati MSXML2_TLB u upotrebu.
Za jasnoću, razmotrite sljedeći primjer primjene ove biblioteke:
Postupak Loaddata; Var xmldoc: domdocument; Korijen: ixmdomelement; Započnite XMLDOC: \u003d codroomdocument.create; Xmldoc.load ("Settins.xml"); Root: \u003d xmldoc.documentelement; ShowMessage ("Veličina / širina"). Tekst); Root: \u003d nil; Xmldoc: \u003d nil; kraj;
Prvo, nastanka se nalazi primena klase DomDocument, nakon čega se sadržaj datoteke Settings.xml učita u memoriju. Kao prema standardu bilo koji XML Datoteka mora sadržavati korijensku oznaku (u ovom slučaju) konfiguracija), onda ga moramo dobiti pomoću funkcije Dokumentarnost. Zatim sadržaj sadržaja između oznaka
Ovdje se primjenjuje metoda SelectsingLende koja uzima niz kao parametar.
Dobrodošli! Ovaj blog je posvećen internetu i računarima, a tačnije su im bili posvećeni.
Vjerovatno se odmah vidi da se mnogo godina nisu pojavile na mjestu dugi niz godina. Da, ovo je sudbina većine blogova. Jednom kada je ovaj projekt bio ambiciozan poduhvat, a autor, kao i u mnogim drugima koji su tada pisali, bili su veliki planovi da postanu jedan od najboljih ruskih blogera. Pa, ako pogledate sada, onda iz tih blogova koji su stvoreni istovremeno sa mojim, većina je već raspuštena u vječnosti. I ja sam taito postao nedostajući vremenski blog. Dakle, da, više nije ažuriran. Iako sam jednom pobijedio na ovoj stranici u takmičenju na blogu 2011. godine.
Čak sam imao ideju da sve to uklonim, ali tada sam revidirao stare materijale i shvatio da i dalje mogu biti korisni čitateljima. Da, neki su članci zastarjeli (ako imam dovoljno snage, oni će dobiti odgovarajuće oznake), ali mjesto, na primjer, može biti korisno za početnike - ovdje možete čitati o osnovnim konceptima Interneta, naučite se prilagoditi Internet, prozori ili čak odlučuju otići u Linux. Dakle, pogledajte naslove i odaberite onu koja je pogodna za vas.
I, nakon svega, nadam se da je više od samog bloga, ali pravi internetski vodič. Stranica se može naći u režimu direktorija, gdje su svi dostupni članci strukturirani po kategorijama. A ko zna možda, ovdje će se početi pojavljivati \u200b\u200bnovi kvalitetni članci.
Brusnica
PICODI.RU je portal za popust iz međunarodnih kupona, poljskog stručnjaka za uštedu i jeftine kupovine. Stubovi se smatraju jednom od najekonomičnijih naroda na svijetu, stoga ne čudi da je ova vrsta projekta uzgajala iz poljskog startapa Kodyrabatowe.pl. Šta može biti korisno ovom portalu običnom korisniku interneta u Rusiji?
Moderni Android telefoni su više od telefona. Navikavate se na skup instaliranih programa, na historiju vaših poziva i tekstualnih poruka, zbirki fotografija i puno. Ali vrijeme prolazi, a potpuno uređen uređaj započinje usporavati, greške ili jednostavno izgubiti prezentibilan pogled zbog uklanjanja tijela ili ogrebotina na ekranu. Postoji pitanje odabira novog telefona i promjene Android telefona. A ako ćemo pitanje izbora sada zaobići zabavu, a zatim "premještanje" na novi telefon ostaje ozbiljan problem - apsolutno ne želim započeti sve podatke iz nule. Ovdje ćemo danas razgovarati o ovome.
Većina čitalaca ovog bloga, najvjerovatnije, nikada se nikada nije suočila sa verzijama kontrole verzije i neće doći u bliskoj budućnosti. I izvini. Ovaj izuzetno korisnički izum široko se koristi programerima, ali po mom mišljenju moglo bi biti vrlo korisno i onima koji aktivno rade s tekstovima. Ali, vjerovatno ne postoji sistem kontrole verzije, što bi bilo lako početi koristiti za "Office" (Microsoft Office) rada. Ipak, mislim da materijal koji se određuje u članku može biti zanimljiv za sve čitatelje.
Ako ste razmišljali o tome kako iz filmova sa televizijama preko mreže i pristupite internetu, ovaj je članak za vas. Ne, znam da neki televizori imaju funkcionalnost pametnog TV-a, ali nikad nisam vidio da radi dobro. Očigledno, dakle, Google je nedavno pokazao potpuno zadivljujući uređaj, odmah završen osjetnjem. Govorimo o medijskom streamer Chromecast (Chromkast), savršenijim i pristupačnijim verzijom prošlogodišnjeg igrača za favoriste nexus-a Q.
Dongle Chromkast, čiju dimenzije ne prelaze 2 inča, povezuju se na HDMI priključak televizora i omogućava vam uživanje u gledanju prenošenja web sadržaja. Da biste kontrolirali streamer, možete koristiti bilo koji uređaj (tablet, računar, pametni telefon) na osnovu iOS, Windows, Android ili Mac OS operativne platforme.
Ovaj je članak posvećen Android sistemu memorijskog uređaja, problemi koji mogu nastati zbog nedostatka i kako ih riješiti. I ja nisam imao tako davno da je moj Android telefon počeo redovno izdavati poruke o nedostatku memorije kada pokušava uspostaviti određenu aplikaciju. Ono što je bilo vrlo čudno za mene uprkos činjenici da je u opisu na tržištu trebalo biti oko 16GB, a također sam povećao ovaj volumen pomoću dodatne memorijske kartice. Međutim, problem je bio i morao sam temeljito Tinker prije nego što sam našao pravo rješenje koje ne zahtijeva primanje korijenskog pristupa ili punog oporavka telefona u tvorničko stanje.
Nedavno se isplaćuje mnogo pažnje izgradnje e-poslovnih sistema, ili kao što se nazivaju i - B2B (posao za posao). S obzirom na preporuke za izgradnju sistemskih sustava za razmjenu koordinacija internetskih tehnologija tijela - www concorutium: naglasak je napravljen prema XML tehnologijama i izgradnju XML sistema za razmjenu dokumenata.
Prednost korištenja XML-a u e-poslovanju je visoka efikasnost B2B sistema pri malim troškovima za njegovu kreiranje zbog jasne i vizuelnog predstavljanja strukturiranih informacija, mogućnost korištenja modernih mrežnih protokola i stvaranje poslovnih sistema u realnom vremenu.
Neovisnost prezentacije informacija u obliku XML dokumenata omogućava različite, sudjelovanje u elektroničkom poslovanju, za proizvodnju neovisnih jedan od drugog.
U svim sustavima razmjena se obično gradi istim shemom pomoću HTTP zahtjeva. SSL protokol primjenjuje se kao SSL protokol (ali ovo je zasebna tema).
Jedna od mogućih opcija za obradu XML poruka je izgradnja bin / CGI (ISAPI) -News ili COM (server) koji formiraju ili obradu XML dokumenata.
S jedne strane, aplikacija djeluje kao klijent, koji u režimu nakon postavlja HTTP upit, s druge strane, web server sa strane obrade upita i odgovor se obrađuje. Razmjena informacija koristi XML dokumente.
Jedna od najefikasnijih opcija implementacije je upotreba postojećeg XML Parsera koji podržava dom model. Takav je parser distributivna ponuda pobjede "ili sastavnog dijela IE 4.7 i iznad (za Win") i predstavlja COM server koji se nalazi u biblioteci MSXML.DLL.
Model komponente (Com) je inkapsulirani podaci i metode u jednu suštinu i način da im pristupite kroz sučelje sučelja. Delphi je jednostavno dostupan pristupu klasama COM objekta (nekoliko klasa može biti uključeno u jedan COM server). Pristup objektima vrši se inicijalizacija klasne instance putem sučelja interfejsa. Opis sučelja vrši se jezikom definicije sučelja (IDL), koji je moguće automatski izvršiti srednje sredstvo.
Delphi znači uvoz sa COM servera msxml.dllDatoteke IDL sučelja su izgrađene i binarna opis datoteke biblioteke je TLB. Ova operacija se vrši kroz sistemski meni: Projekt | Uvoz biblioteke tipa:(Slika 1). Pojavi se sljedeći dijaloški okvir (slika 2), u kojoj želite odabrati COM objekt (u našem slučaju objekt je registriran kao "Microsoft.xmldom (verzija 2.0)") i kreirajte TLB datoteku (tipku Kreirajte jedinicu.). Korištenje TLB datoteke, okoliš stvara "Paskalevsky" opis datoteke COM servera - MSXML_TLB.PAS
Datoteka MSXML_TLB.PAS opisuje sva sučelja, konstante i COM servere.
Za pristup objektima COM elementa potrebno je u direktivi Koristi.dodajte naziv datoteke opisa biblioteke (MSXML_TLB.PAS). Ispod je najjednostavniji program koji koristi dom standardni MSXML.DLL analizator, koji preuzima XML dokument i prikazuje ga u elementu tekstualnog okvira MEMO1.
koristi. Prozori, poruke, sysutils, klase, grafika, kontrole, obrasci, dijalozi, oleserver, msxml_tlb, stdctrls; vrsta TFORM1 \u003d. klasa(TFORm) dugme1: tbtetton; Memo1: Tmemo; postupak. Dugme1click (pošiljalac: togject); kraj; var. Obrazac1: TFORM1; implementacija ($ R * .dfm) Postupak.TFORM1.Button1click (pošiljalac: Togject); // Izjava o objektu Soklass Domdocument; var.codoc: CodromDocument; // klasa, u skladu sa sučeljem IDOMDomDocument; var.Doc: Ixmldocument; započnite. // Stvaranje instancije objekta DomDocument; Doc: \u003d codoc.create; // nazovite način načina primjene objekta DomDocument; Doc.load ("data.xml"); // Pristup instanci imovine XML objekta DomDocument; Memo1.text: \u003d doc.xml; kraj; kraj.Dom koncept - Model dokumenta objekta
Svaki XML dokument predstavljen je kao skup pluralnosti objekata (klasa), sa kojim je moguć pristup pojedinim elementima (polja objekata). Dom - sučelje opisuje pristup jednostavnim domstring ili motornim nalogu i dijelovima ili odvojenim XML elementima dokumenta: DomFragmentelement, Domnode, Domlement.
Slijede najvažnija svojstva i metode XMlDomDocument, XMldoMNODE, XMLDOMNODELIST. Treba napomenuti da Model MSXML.DLL analizator, MSXML.DLL XML analizator, predstavljen u nastavku koriste MSXML.DLL XML analizator od konzorcijuma Doma odobren od strane W3C modela.
Kompletniji opis objekata interfejsa Doma možete pronaći na
XMlDomDocument objekt | |
Predstavlja vrhunsku razinu hijerarhije objekta i sadrži metode rada s dokumentom: njegove preuzimanja, analize, stvaranje elemenata, atributa, komentara u njemu itd. . | |
Nekretnine | |
Async. | Imovina koja identificira režim trenutnog obrade |
Parseerror | Vraća referencu na XMLDomparseError obradu greške |
Omogući - Onemogući provjeru dokumenata. | |
url | Vraća URL dokumenta |
dokumentarnost | Sadrži referencu na korijenski element dokumenta kao XMldomemement objekt. |
Metode | |
opterećenje (URL) loadxml (XMLSTRING) |
Učitava XML dokument |
spremi (objtarget) | Spremne XML dokument u datoteci |
prekinuti. | Prekidajući postupak preuzimanja i obrade dokumenta. |
createatTribute (ime) | Stvara novi atribut s navedenim imenom za trenutni predmet. |
createnode (tip, ime, naspaceuri) | Stvara čvor navedenog tipa i naslova |
kreaElement (tagname) | Stvara element dokumenta sa navedenim imenom. |
createETextNode (podaci) | Stvara tekst unutar dokumenta |
getelementsbytagname (tagname) | Vraća vezu na prikupljanje predmeta dokumenata s navedenim imenom |
nodeFromid (Idstring) | Pretražite element identifikatorom |
Xmldoomnode objekt | |
XMLDomnode objekt koji implementira osnovni dom sučelje Čvor., Dizajniran za manipuliranje posebnim čvorom stabla dokumenta. Njegova svojstva i metode omogućuju vam primanje i promjenu potpunih podataka o trenutnom čvoru - njegovom vrstu, imenu, punoj nazivu, njegovom sadržaju, popisu dječijih elemenata itd. | |
Nekretnine | |
nodename, basename. | Vraća ime trenutnog čvora. |
prefiks. | Vraća prefiks prostora imena. |
datatip. | Definira vrstu sadržaja trenutnog čvora |
nodeType, NODETIYPESTRING | Vraća vrstu trenutnog čvora: |
atributi. | Vraća popis atributa trenutnog čvora kao kolekciju XMlDomMedemap. |
tekst. | Vraća sadržaj trenutne podrške u obliku teksta. |
xML | Vraća XML prikaz trenutne podrške. |
nodevalue. | Vraća sadržaj trenutnog čvora. |
dječja dječja. | Vraća popis dječijih elemenata kao xmldoomnodelist. |
prvolder, kandži. | Vraća prvi / poslednji dečji element |
prethodnaSibling, Nextsibling | Vraća prethodni / sljedeći element sestrinstva. |
parentnode. | Sadrži referencu na roditeljski element. |
vlasnikDokument | Vraća pokazivač na dokument u kojem se nalazi trenutni čvor. |
Metode | |
pripadchild (NewChild) | Dodaje novi dječji element na trenutni čvor. |
iNSERTEBREFROFOFOROFE (NOVICHILD, REFCHILD) | Umetanje dječje čvora, imajući ga u trenutnom podvrstom "lijevo" čvora koji je odredio parametar reflica. |
klonenode (duboko) | Kreirajte kopiju trenutnog elementa. |
getattribute.(Ime) getattributenode. (Ime) setattribute (ime, vrijednost) setattributenode (XMLdomattribute) |
Pristup atributima (stvaranjem, čitanjem, pisanje) objekta. Naziv - Naziv atributa, vrijednost - njegova vrijednost. Vraća vrijednost XMLDomattribute objekta. |
zamjenicaCechild (NewChild, Oldchild) Removechild (Oldchild) | Zamena OldChild objekta trenutnog popisa podružnica na NewChildu. Uklanjanje Old7ild objekta |
selectNodes SelectSingLende (uzorak) | Vraća XMLDomnoDelist objekt odabrano po uzoru pretraživanja ili prvi čvor |
transformode (styesheet) transformnoDetobject (Styleshesheet, VanPobject) |
Dodjeljuje tablicu stila za podršku trenutnom čvoru i vraća niz - rezultat obrade. Upućivanje na DomDocument objekt prenosi se kao parametar u kojem se nalaze XSL upute. |
Korištenje XML-a u poslu.
Za jasniju sliku potrebno je objašnjenje i zašto je sve to neophodno s čemu razumjeti kako to funkcionira:
Prilikom izgradnje B2B ili korporativnog ERP sistema, prilikom organiziranja razmjene informacija o XML-u između preduzeća ili grana Prom-I, efektivno dokazani informativni sistem koristi se na osnovu dostupnih web servera na HTTP protokolima.
S jedne strane, aplikacija djeluje kao klijent, što u režimu posta dobiva HTTP upit, s druge strane, web server je na strani koji je zahtjev obrađen i odgovor. XML dokumenti koriste se kao razmjena.
Na primjer, u jednostavnom korporativnom ERP sistemu računovodstvenog programa (ACS računovodstvo) potrebno je formirati određeni zahtjev za fakturu i prenijeti ga u granu koja ima skladište (ACS skladište). Art je slična postavka problema prilikom kreiranja B2B sistema, kada poduzeće Zahtjevi za zahtjeve dostupnosti proizvoda (narudžba za kupovinu) od dobavljača V.
Enterprise A i njegov program djeluje kao klijent. Skladište služi dobavljaču u koji ima skladište BD kompleks na SQL serveru. Exchange se vrši putem korporativnog dobavljača web servera V.
Ispod je sljedeći tipični algoritam razmjene:
Slika 3.
- Enterprise A.inities proces A.(Nalog o proizvodu), koji djeluje kao web klijent.
- Proces A.generira XML dokument (na primjer, fakturu) i prenosi ga kao post HTTP upit na web dobavljaču Server V. Kao uri - koristi se identifikator aplikacije za obradu. Uri može biti isti kao i za sve vrste dokumenata ili pojedinca za svaku vrstu. Sve ovisi o strukturi B2B (Web) servera.
- Web server analizira zahtjev i generira server Proces B.Prenošenjem XML dokumenta kao parametar.
Proces na web poslužitelju pokrenut je i obrađen ili kao ASP stranica, CGI (ISAPI) - aplikacija ili Java sevrlet (aplikacija servera) - Proces B.- Generira zahtjev SQL poslužitelju baze podataka.
- SQL server čini potrebne operacije u bazi podataka, formira odgovor i vraća ga. Proces B..
- Na odgovoru sa SQL servera Proces B. Generira XML dokument (odgovor) i omogućava kao odgovor na HTTP zahtjev za aplikaciju klijenta.
- Nadalje, ovisno o situaciji na strani klijenta formira se ili novi HTTP upit ili sesija završava.
Nekoliko riječi o organizaciji upravljanja dokumentima.
Opće pravilo razvoja XML Exchange sistema je:
- prvo- razvoj kruga protoka elektronskih dokumenata i njihove strukture;
- drugo- Razvoj tablica funkcija procesa (podprocesi) I.E. Koju funkciju u odnosu na koji će XML dokument provesti svaki postupak.
Svaki XML dokument, poput HTML dokumenta, trebao bi se sastojati od zaglavlja poruka (Information zatvorenika) i tijela za poruke (za upit ove informacije uokvirene oznakom da odgovore na zahtjev). Da bi se XML dokument pravilno formirao, potrebno je za njegove dvije komponente "zaglavlja" i "Zahtjev" u uokvirene oznake, na primjer. Pogled na standardni dokument predstavljen je u nastavku:
Naslov (slika 4), za razliku od HTML-a dokumenta, treba sadržavati različite vrste uslužnih podataka, uključujući informacije o vrsti procesa prenošenja i obrade dokumenata. Primljena je informativna obrada dokumenta, I.E. Značajan dio je uokviren oznakom. Treba napomenuti da struktura zaglavlja treba ujediniti za sve vrste dokumenata.
Za proces koji vodi poslužitelj, algoritam za obradu poželjno (ali nije potreban) za izgradnju na sljedeći način:
Slika 6.
Neki glavni trenuci prilikom stvaranja dijela klijenta
Kao što je već objašnjeno, prilikom kreiranja XML dokumenta koristi njen prikaz u obliku dom modela. Ispod je primjer teksta Delphi teksta XML programa zaglavlja poruke.
postupak.TthRead1.headerCreate (pošiljalac: Togject); var. // Najava klasa potrebna je za stvaranje Codoc: CodromDocument; // XMlDomDocument objekt Doc: Domdocument; R: ixmdomelement; Čvor: ixmdomelement; // domtext txt: ixmldomtext; // Domattribute atr: Ixmldomattribute; započnite. // Stvaranje Dom dokumenta Doc: \u003d codoc.create; Doc.set_async (false); // Početni dokument Doma inicijacije Doc.loadxml ("Treba napomenuti da je najava kodoka: kodomdokument i doc: dom promjenjive, kao i stvaranje načina kreiranja (doc: \u003d codoc.create;) se izvodi jednom. Izjava varijable je u odjeljku Opisa globalnih varijabli, a ne u lokalnom postupku, kao što je prikazano za vidljivost u ovom primjeru (I.E. Jedna globalna varijabla programskih modula DomDocument-a).
Rezultat gore navedenog programa bit će kreirani zaglavlje, u odnosu na naš primjer XML dokumenta: prikazan na slici 5.
Slika 5.
Slika 6.
Glavna prednost prenošenja informacija u obliku XML dokumenata je da je moguće formirati poruku koristeći neovisnu strukturu tablica u DBMS i na primljenu i na prenesenoj strani. Koristeći naš primjer, neka se mora prenijeti informacije o računima poduzeća A, od DBMS-a građevine prikazane na slici 6
Da bi se formirao XML dokument koji sadrži fakturu, u početku izgrađen SQL zahtjev (upit a) s informacijama o računu:
Odabrati * Iz računa_general Gde. InvoiceNum \u003d: broj OdabratiRoba, quun, cena, hz_cod Od.Roba Gde. InvoiceNum \u003d: broj //: broj - parametar koji određuje broj fakture.Ispod je dio programa koji formira tijelo XML dokumenta:
postupak. TthRead1.DATABODYCreate (pošiljalac: TOBJECT); var. // Class i XMldoMDocument // codoc: codromdocument; // mora biti globalni, za cijeli modul. // doc: domdocument; // najava domnih predmeta R: ixmdomelement; // Domlement; Čvor, node2: ixmdomelement; NODE3, NODE4: IXMLdoMelement; // domtext txt: ixmldomtext; Str: String; // InvoiceNumber: cijeli broj; - Globalna varijabla - // Masching 987654 // Querya, Queryb: Niz; - globalna varijabla, // održavanje zahtjeva za zahranjenost // Querya - Zahtjev i opće informacije o fakturi // queryb - upita B informacije o robi opisanoj u // fakturu (vidi tekst) započnite. Query.close; // pogledajte na tekstu "Zatražite a" Query.Text: \u003d Querya; // Zatražite izvršenje Query.execsql; Upit.open; // dobiti adresu korijenskog elementa R: \u003d doc.get_documentemlement; Node2: \u003d doc.createeleement ("zahtjev"); // Kreirajte Domlement (oznaka) Čvor: \u003d doc.createeleement ("faktura"); // Dodavanje predmeta u korijen R.AppendChild (NODE2); // Dodavanje predmeta u Đoge2. Pripadchild (čvor); // Kreirajte Domlement (oznaka) Node3: \u003d doc.createeleement ("Depumture"); // Dodavanje predmeta u Čvor. Pripadnik (čvor 3); // Apel na polje "Depurture" Str: \u003d query.fieldbyname ("Depumture"). Assstring; // Stvaranje tekstualne čvorove \u003d vrijednost polja // Vrijednost dodjele čvora // Tekst čvor, varijabilni str De.appendChild (txt); // slične operacije za oznakuKao rezultat ovog postupka formiran je sljedeći tekst XML dokumenta:
Otvorena metoda koristi se za formiranje upita. Ixmlhttprequest:
postupak. Otvoreno (Const bstrmethod, - metoda tipa \u003d "Post" BSTRURL, - URL Varasync adresa servera, - Asinhroni / sinhroni način komunikacije \u003d TRUE BSTRASER, - Korisničko ime za bstRSSordword Autentifikaciju) - lozinkaIzrada poslužitelja dijela obrade dokumenata
Kao što je ranije napomenuto, obrada HTTP zahtjeva može se izvesti ili CGI aplikacije ili Java servlets. Moguće opcije za pisanje stranica ASP-a. Ali u ovom slučaju, prijenos podataka moguć je samo samo "Get" koristeći nizu upita. Iako, HTTP obrada zahtjeva ASP stranice djeluje efikasnije od CGI aplikacije. Međutim, po mom mišljenju, bez ikakve razlike, i što je još važnije rešiti pitanje - kako izgraditi program za obradu, a ne sa kojim sredstvima.
Ako smo pregledali mogućnosti za formiranje XML dokumenta iz prethodnog poglavlja, tada je zadatak aplikacije poslužitelja suprotan od XML dokumenata. Ispod je dio programa koji analizira XML dokument:
postupak.Tthread1.dataparser (pošiljalac: dubnja); var. // najava domnih predmeta R, fnode: ixmdomelement; Str, naziv datoteke: string; Parm: string; // Soklass najava i Codocxml, CodocXSL, Codocresult: CodromDocument; // XMlDomDocument objekt Xmldoc, xsldoc, rezultatdoc: domdocument; // httpstr: string; - globalna varijabla koja sadrži nizu HTTP upita Započnite. Xmldoc: \u003d codocxml.create; Xmldoc.loadxml (httpstr); // dobiti adresu korijenskog elementa R: \u003d doc.get_documentemlement; // dobivanje vrijednosti elementa Fnode: \u003d r.selectrementLenode ("// upisument"); // dobiti ID vrijednosti atributa \u003d "narudžba" Naziv datoteke: \u003d fnode.getattibute ("ID"); // i formiranje naziva datoteke nalog.xsl Naziv datoteke: \u003d filename + ". Xsl"; // Izrada dokumenta xsldoc Xsldoc: \u003d codnocxsl.create; Xsldoc.loadxml (naziv datoteke); // Izrada XMLDOC dokumenta Rezultati: \u003d codnocresult.create; // Postavljanje načina sinhronog obrade RezultatDoc.set_async (false); // Instaliranje čekanja za debitovanje RezultatDoc.ValidateOnParase: \u003d TRUE; // sažmi xmldoc by XSL predložak Xmldoc.transformnoc, rezultataOc (xsldoc, rezultatdoc); // varijabilni ul je dodijeljen tekstualnom vrijednošću // rezultirajući dokument. Str: \u003d rezultatdoc.text; // Element za pretraživanje Fnode: \u003d r.selectingLenode ("// korice"); // i dobivanje vrijednosti elementa Parm: \u003d fnode.text; // Zatvara zahtjev za pristup Query.close; Query.text: \u003d Str; // Dodjeljivanje vrijednosti parametra Query.params.asstreng: \u003d parm; // Zatražite izvršenje Query.execsql; kraj;Čitav raspon raščlanjivanja je primijeniti XSL predložak, koji se formira za svaku vrstu dokumenta pojedinačno. Rezultat analize je SQL Query niz. Posljedično, izvršenje generiranog SQL Query niza učinit će potrebne promjene u DBMS-u.
Prednost korištenja raščlanjivanja kroz predložak također je u činjenici da ispada neku fleksibilnost podataka, a dobiva se potpuna neovisnost rada algoritma iz programskog koda. Ispod je tekst XSL obrasca koji se koristi za obradu vrste dokumenata.
Objavljivanje gore navedenog primjera, treba napomenuti da je upotreba parova oznaka i formalna, jer Nakon raščlanjivanja, barem jedan čvor treba biti prisutan u rezultiranom XML dokumentu. Metoda rezultata rezultata dodjeljuje tekstualnu vrijednost dobivenu tijekom analize XML dokumenta rezultata. U ovom slučaju, vrijednost je sve što su parovi oznaka uokvirene i, tj. Formirali smo SQL zahtjev.
Druga značajka pisanja programa treba napomenuti mogućnost korištenja SQL parametra : broj. Korištenje parametra omogućava vam pojednostavljenje teksta XSL predloška. Definicija Vrijednost odgovarajućih elemenata XML čvorova dokumenata određuje se u početku birajući naziv odgovarajućeg čvora, na primjer:
Ukratko o XSL-u
XSL skraćenica dolazi sa jezika s proširivim stilovima - jezik oblikovanja tablice u stilu (XML podaci). Kao što je jasno iz programa zaglavlja za glavu Extensible Stylesheet (XSL) (XSL) koristi se za formatiranje XML podataka. Po definiciji W3C XSL sastoji se od dva dijela:
- XSLT - XSL transformacija. Jezik koji se koristi za pretvaranje ili formatiranje (transformator) XML dokumenata. Dakle, pomoću XSLT-a možemo dobiti različite dijelove višestrukih obrazaca podataka i prezentacije podataka.
- Formatiranje elemenata. Ovi elementi uključuju sve elemente tipografskih dizajna podataka, nakon što se obrađuju pomoću XSL-a. Koristi se samo za formiranje HTML stranica.
Upotreba XSLT-a možemo odabrati podatke iz XML datoteke koja vam je potrebna i dogovorite ih u obrazac kako biste korisniku pružili. Na primjer, u našem slučaju smo transformirali XML podatke kao SQL upit. Classic XSL aplikacija obično formatiraju podatke kao HTML stranice ili rijedak prikaz u obliku RTF datoteka.
XSL datoteka opisuje predložak (predložak), prema kojem će se izvršiti konverzija XML pretvorbe podataka. Povratak u XSL predloške, sljedeći elementi mogu se dodijeliti u XSLT (direktive):
XSL Direktiva | opis |
---|---|
xSL: PRIMENE PREDMETI | Direktiva, što ukazuje na primjenu odgovarajućih predložaka Atribut Select \u003d "Ime predloška" |
xSL: atribut. | stvara stablo atributa i dodaje ga izlaznim elementom, naziv \u003d "Naziv atributa", imena imena - uri na prostoru imena (prefiks imena) |
xSL: Nazovite predložak | izaziva predložak, atribut naziv \u003d "uri na predlošku" |
xSL: Odaberite. xSL: Kada. xSL: Inače. |
izrada izbora pod uvjetom XSL: Kada EXPR \u003d "Izračunavanje izražavanja na script", jezik \u003d "Jezički naziv" test \u003d "Izračunati izraz" |
xSL: komentar | generira komentar na izlazni dokument |
xSL: Kopiraj xSL: Kopija - |
kopira trenutni čvor u izlazni izvor ili ubacuje fragment dokumenta na čvor gdje se bira \u003d "Naziv izvornog čvora" atribut |
xSL: Element | stvara izlazni element po imenu, atributi name \u003d "Ime elementa", imespace \u003d "Uri se odnosi na imenu imena" |
xSL: za svaki | ponovno primijenite predložak svim čvorovima na listu čvorova, odaberite Atribut Postavlja popis čvorova. |
xSL: Ako.) | provjera uvjeta postavlja se atributom testa kao izraz |
xSL: uključuju | sadrži vanjski predložak, atribut href \u003d "Uri Reference" |
xSL: izlaz | određuje rezultat izlaza, atribut metode može imati "XML", "HTML" ili "tekst" |
xSL: Param | određuje vrijednost parametra, naziv \u003d "Naziv parametra", odaberite \u003d "Vrijednost" |
xSL: Uputstvo za obradu | stvara upute za obradu, atributi naziv \u003d "Upute za procesne naziv" |
xSL: Sortiraj. | sortira mnogo čvorova, atributi Odaberite \u003d "Naziv čvora", tip podataka \u003d tip podataka ("Tekst" | "Broj" | QNAME), narudžba \u003d Sortiraj smjer (silazno)) |
xSL: Stylesheet. | definira XSL dokument predloška, \u200b\u200bje korijenski element za XSLT |
xSL: Predložak. | određuje XSL predložak, ime \u003d "URI prefiks atribut na naziv predloška", Match \u003d "Napomena na čvor na koji se prijavljuje predložak" |
xSL: Tekst. | stvara tekst u izlazne tokove, onemogućavanje izlaza - eskapiranje \u003d "Da" ili "Ne" atribut ukazuje na mogućnost generiranja ESC likova |
xSL: vrijednost | umeće vrijednost odabranog čvora kao teksta, odabir \u003d "Pointer na atribut čvora" iz koje se uzima vrijednost |
xSL: varijabla | određuje vrijednost varijabilnih granica, ime Atribute \u003d "Variable Name", odaberite \u003d "Izračunajte vrijednost varijable" |
xSL: sa-param | primjenjuje parametar na predložak, ime Atribute \u003d "Naziv parametra", odaberite \u003d izraz za izračun trenutni kontekst, zadanu vrijednost "." |
Zaključak
Zaključno, treba napomenuti da korištenje standardnog XML Parsera msxml.dllto nije jedino sredstvo za analizu i stvaranje XML dokumenata. Na primjer, za kreiranje XML dokumenata za efikasno korištenje komponenata Tpageproduser.i Ttableproduser.. Ali ovaj članak naglašava samo širinu i mogućnost primjene dom modela u praksi.
Autor će biti vrlo zahvalan na povratnim informacijama o važnosti teme, ukupnog sadržaja, stila prezentacije, kao i svih ostalih komentara koji će pomoći u daljnjem poboljšanju prikupljanja članaka i oslobađanje knjiga koje pokrivaju Predmet praktične strane upotrebe XML dokumenata u e-trgovini. Za više informacija o praktičnoj strani primjene elektroničkih dokumenata možete naučiti na www.edocs.al.ru na autorskoj web stranici, planirano je i za postavljanje izvornih tekstova i primjera.