XML-i keelt kasutatakse üha enam teabe salvestamiseks, jagades seda rakenduste ja veebisõlme vahel. Paljudes rakendustes kasutatakse seda keelt andmete põhitarbena teistes XML-andmete eksportimiseks ja importimiseks. Sellest tuleneb, et arendajad on aeg mõelda, kuidas kasutada XML-andmeid oma rakendustes.
Selles artiklis kaalume XML-dokumendi objekti mudelit (DOM) ja selle rakendamist Microsoft XML DOM-i rakendamisele.
XML DOM on objekti mudel, mis pakub arendaja esemeid XML-failide allalaadimiseks ja töötlemiseks. Objekti mudel koosneb järgmistest peamistest esemetest: Xmldomdocument, XMldomnodeli, Xmldomnode, XMldomnamednodemap ja XMldomparseError. Kõik need objektid (va Xmdomomparserserror) sisaldab omadusi ja meetodeid objekti teabe saamiseks, manipuleerivad objekti väärtused ja struktuur, samuti liikuge mööda XML-dokumendi struktuuri.
Kaaluge XML-i peamisi objekte ja andke mitmeid näiteid nende kasutamisest Borland Delphis.
XML DOMi kasutamine Borland Delphi
Et kasutada Microsoft XML DOM DELPHI rakendustes, peate ühendama projekti asjakohase tüübiraamatukogu. Selleks täidame projekti Importi tüüp Raamatukogu ja impordi tüübi raamatukogu dialoogipaneelil valige Microsoft XML versioon 2.0 raamatukogu (versioon 2.0), mis asub tavaliselt Windowsi süsteemis \\ MSXML.DLL-failis
Pärast CREA-seadme nupu vajutamist luuakse MSXML_TLB liidese moodul, mis võimaldab meil kasutada XML DOM-i objekte: Domdocument, XMldocument, XMLHTPequest ja mitmed teised rakendatavad MSXML.DLL raamatukogus. Link MSXML_TLB moodulile peab olema loetletud kasutusalade loendis.
XML DOM seade
Dokumendi objekti mudel tähistab XML-dokument filiaalide puude struktuuri kujul. XML DOM tarkvaraliidesed võimaldavad rakenduste puude navigeerimiseks ja selle oksade manipuleerimiseks. Iga filiaalil võib olla konkreetne tüüp (Domnodetype), mille kohaselt on määratud vanemad ja tütarettevõtted. Enamikus XML-dokumente leiate elemendi, atribuudi ja tekstiharu oksad. Atribuudid (atribuut) on spetsiaalne filiaali tüüp ja need ei kuulu tütarettevõtted. Atribuutide haldamine erimeetodidXML DOM objektide poolt.
Lisaks soovitatava World Wide Web Consortiumi (W3C) liideste rakendamisele sisaldab Microsoft XML DOM meetodeid, mis toetavad XSL-i, XSL-i mustreid, nimeruume ja andmetüüpe. Näiteks SelectNodes meetod võimaldab teil kasutada XSL malle süntaksi (XSL mustri süntaksi) otsida oksad konkreetse kontekstis ja Transformanode meetod toetab XSL kasutamise muutuste tegemiseks.
Test XML-dokument
XML-dokumendi näitena võtke muusika CD-ROM-i kataloog, millel on järgmine struktuur:
Nüüd oleme valmis alustama objekti mudelit XML DOMi, mis algab XMldomdocument objektiga.
XML-dokument - Xmldomdocument objekt
XML-dokumendiga töötamine algab selle allalaadimisega. Selleks kasutame koormuse meetodit, millel on ainult üks parameeter, mis näitab allalaaditud dokumendi URL-i. Failide allalaadimisel kohalikul kettal on määratud ainult täielik failinimi (fail: /// Sel juhul võib välja jätta). Kui XML-dokument salvestatakse stringina, tuleb sellise dokumendi allalaadimiseks kasutada LogeXML-meetodit.
Dokumendi allalaadimise meetodi kontrollimiseks (sünkroonne või asünkroonne), ASYNC vara kasutatakse. Vaikimisi on see vara tõene, mis näitab, et dokument on laetud asünkroonselt ja juhtimine tagastatakse taotlusele ka enne dokumendi täielikku laaditud. Vastasel juhul laaditakse dokument sünkroonselt ja siis peate kontrollima readyState vara väärtust, et teada saada, dokument laadida või mitte. Samuti saate luua Orydeadytatechange sündmuste käitleja, kes saab kontrolli readState vara väärtuse muutmisel.
Allpool on näidatud, kuidas alla laadida XML-dokumendi laadimismeetodi abil:
Kasutajad ... msxml_tlb ... protseduur tform1.button1click (saatja: tofject); Var xmldoc: ixmldompdocument; Alusta XMLDOC: \u003d Codomdocument.create; Xmldoc.async: \u003d FALSE; Xmldoc.load ("C: Data \\ Data.xml"); // // Siin on kood, mis manipuleerib // XML-dokument ja selle harud // xmldoc: \u003d null; lõpp;
Pärast dokumendi laadimist saame viidata selle omadustele. Seega ei sisalda Nomename vara #Document väärtus, nodetystringering vara on dokumendi väärtus, URL-i vara on fail: /// C: /Data/data.xml väärtus.
Töötlemine on viga
Eriti huvipakkuvad omadused, mis on seotud dokumendi töötlemisega, kui see on laaditud. Seega tagastab ParseErrori kinnisvara XMldomparrori objekti, mis sisaldab töötlemisprotsessi käigus tekkinud veateavet.
Veakäitleja kirjutamiseks saate lisada järgmise koodi:
VAR XMLERROR: ixmldomparseError; ... xmldoc.load ('c: Data \\ Data.xml "); XMLerror: \u003d XMldoc.ParseError; Kui XMLerror.Errorcode.<> 0, siis // // Siin töötleme vea // muidu memo1.lines.add (xmldoc.xml); ... xmldoc: \u003d nill;
Et teada saada, milline teave on vigade korral tagastatud, muutke järgmist kataloogi kirje:
sulgemise elemendi eemaldamine
Nüüd kirjutage kood, mis tagastab xmldomparrori objekti omaduste:
XMLerror: \u003d XMldoc.ParseError; Kui XMLerror.Errorcode.<> 0 Siis koos XMLerroriga, memo1.lines do Alustada ('Fail:' + URL); Lisa ("Kood: '+ Inttostr (Errorcode)); Lisa ("Viga:" + põhjus); Lisa ("Tekst: '+ SrCText); Lisa ("Row: '+ INTTOSTR (joon)); Lisa ("Positsioon: '+ INTTOSTR (linepos)); Lõpuks mujal Memo1.lines.Add (xmldoc.xml); Lõpp;
ja täita meie taotlus. Selle tulemusena saame järgmise veateabe.
Nagu võib näha ülaltoodud näitest, on XMldomparori objekti tagastatud teave piisav vigade lokaliseerimiseks ja selle esinemise põhjuse mõistmiseks.
Nüüd taastada sulgemise element
Juurdepääs dokumendipuu juurde
Dokumendipuu juurde pääsemiseks saate kas juureelementi saada ja seejärel läbi oma tütarettevõtteid või leida mõningaid konkreetseid filiaali. Esimesel juhul saame põhielemendi dokumendi vara kaudu, mis tagastab XMldomnode'i objekti. Allpool on näidatud, kuidas kasutada dokumentide vara, et saada iga lapse elemendi sisu:
Var sõlme: ixmldomnode; Juur: ixmldomelement; I: täisarv; ... root: \u003d xmldoc.doc.docelement; Sest i: \u003d 0 kuni root. Memo1.lines.add (Node.Text); Lõpp;
Meie XML-dokumendi jaoks saame järgmise teksti.
Kui me oleme huvitatud mõnest konkreetsest konkreetsest haru või haru taset allpool esimese tütarettevõtte all, saame kasutada kas Nodefromiidi meetodit või XMldomdocument objekti objekti GetellementBameTame'i meetodit.
Nodefromiidi meetod nõuab XML-skeemi või dokumendi tüübi määratluse (DTD) määratletud unikaalse identifikaatori täpsustamist ja tagastab selle identifikaatoriga haru.
GeteelementbyTagme meetod nõuab konkreetse elemendi (sildi) stringi märget ja tagastab kõik selle elemendiga harud. Allpool on näidatud, kuidas seda meetodit kasutada kõigi meie CD-ROM-i kataloogi esitajate leidmiseks:
Sõlmed: ixmldomnodelic; Sõlme: ixmldomnode; ... sõlmed: \u003d xmldoc.gegelementsbeerytagname ("kunstnik"); Sest i: \u003d 0-st sõlmedele.Pikkus-1 do alustada sõlme: \u003d Nodes.Item [i]; Memo1.lines.add (Node.Text); Lõpp;
Meie XML-dokumendi jaoks saame järgmise teksti.
Pange tähele, et XMLdomnode Selects Selectionnode'i meetod annab paindlikuma võimaluse dokumendi harude avamiseks. Aga see on veidi madalam.
Dokumendi haru - XMldomnode objekt
XMldomnode'i objekt on dokumendiharu. Oleme juba selle objektiga kokku puutunud, kui dokumendi juureelement saadi:
Root: \u003d XMldoc.documellement;
XML-dokumendi filiaali teabe saamiseks saate kasutada XMldomnode'i objekti omadusi (tabel 1).
Access andmetele salvestatud filiaal, tavaliselt kasutada Nodevalue vara (saadaval atribuutide, teksti oksad, kommentaarid, töötlemise juhiseid töötlemise ja CDATA sektsioonide) või teksti vara, mis tagastab teksti sisu filiaali või NodetypedValue vara. Viimast saab siiski kasutada ainult trükitud elementide oksad.
Liiguta dokumendi puu
XMldomnode objekt pakub erinevaid võimalusi dokumendipuu kaudu liikumiseks. Näiteks, et pääseda juurdevajalikule filiaalile, kasutatakse vanemnodeerimisomandit lapse oksade juurdepääsu laste omaduste (XMLDCHILD tüüpi) kaudu, esmaklaplik ja lastelaim (Xmldomnode) jne. Omanikdokumentide vara tagastab XMLDocument objekti, mis identifitseerib XML-dokumendi ise. Ülaltoodud omadused muudavad dokumendipuu kaudu lihtsaks liikumiseks.
Nüüd ma ületan kõik filiaalid XML-dokumendi:
Root: \u003d XMldoc.documellement; Sest i: \u003d 0 kuni root. Kui Node.Haschildnods siis getchilds (sõlme, 0); Lõpp;
Nagu eespool märgitud, seletab selectionNodes objekti Xmldomnode pakub paindlikumat viisi juurdepääsu filiaalide dokumendi. Lisaks on olemas valikumeetod, mis tagastab ainult dokumendi esimese haru. Mõlemad meetodid võimaldavad teil määrata XSL-mallid filiaalide otsimiseks.
Mõelge protsessi, mis kasutab selectionNodes meetodit kõigi filiaalide väljavõtmiseks, millel on CD-haru ja inflatsioon.
Root: \u003d XMldoc.documellement; Sõlmed: \u003d root.Selectnodes (CD / Hind ");
Sõlmede kogumine pannakse kõik sorterite hinnaga CD-oksad. Arutelu XSL mallide naaseb veidi hiljem.
Manipuleerimine tütre oksad
Tütarettevõtete manipuleerimise jaoks saame kasutada XMLdomnode'i objekti meetodeid (tabel 2).
Esimese ketta salvestamise täielikuks kustutamiseks peate täitma järgmise koodi:
Var xmldoc: ixmldompdocument; Root: ixmldomnode; Sõlme: ixmldomnode; Xmldoc: \u003d koodomdokment.create; Xmldoc.async: \u003d FALSE; Xmldoc.load ("C: Data \\ Data.xml"); // saada juureelemendi juur: \u003d XMldoc.doc.docelement; Sõlme: \u003d root; // Eemaldage esimene tütarettevõttesõlme.Removechild (node.firstchild);
Pange tähele, et selles näites eemaldame esimese tütarettevõtte. Esimese tütarettevõtte esimese elemendi eemaldamine on näidatud allpool:
Var xmldoc: ixmldompdocument; Root: ixmldomnode; Sõlme: ixmldomnode; Xmldoc: \u003d koodomdokment.create; Xmldoc.async: \u003d FALSE; Xmldoc.load ("C: Data \\ Data.xml"); // saada juureelemendi juur: \u003d XMldoc.doc.docelement; // ja esimene tütarettevõtja sõlme: \u003d root.Firstchild; // Eemaldage esimene tütarettevõttesõlme.Removechild (node.firstchild);
Ülaltoodud näites me ei eemaldanud esimest haru.
Nüüd lisage uus haru. Allpool on kood, mis näitab, kuidas lisada uus muusika CD-ROM-i rekord:
Var newnode: ixmldomnode; Laps: ixmldomnode; ... // Uue haru loomine -
Ülaltoodud kood näitab uue haru lisamiseks järgmist tegevuste järjestust:
- Uue filiaali loomine kreenodenoodi abil:
- kirje loomine kreenode meetodi abil;
- ometi lisamine filiaalile ahelate meetodi abil;
- elemendi väärtuse määramine teksti vara kaudu;
- ... korrake kõikide üksuste jaoks.
- Uue haru lisamine dokumendile appilusega.
Tuletame meelde, et aheldamise meetod lisab puu lõpus filiaali. Filiaali lisamiseks puidu konkreetsele kohale peate kasutama insertbefore meetodit.
Filiaalide komplekt - xmldomnodeli ese
XMlnodeliumi objekt sisaldab filiaalide loendit, mida saab ehitada selementNodes või geteelementByTagme'i meetodite abil ja seda saadakse ka Childnodiase vara.
Oleme juba kaalunud selle objekti kasutamist sektsioonis toodud näites "Dokumendipuu liikumisel". Siin me anname ka mõned teoreetilised kommentaarid.
Loendite filiaalide arvu võib saada pikkuse väärtusena. Filiaalidel on indeksid 0-st kuni pikkusele - 1 ja iga üksiku haru on saadaval vastava indeksiga elemendi kaudu.
Liikumist filiaalide loendist saab läbi viia ka järgmise filiaali naaseva järgmise filiaali abil, kui praegune haru on viimane. Nimekirja ülaosas naasmiseks peate helistama lähtestamise meetodile.
Dokumentide loomine ja salvestamine
Niisiis, me vaatasime, kuidas saate lisada filiaale ja elemente olemasolevatele XML-dokumentidele. Nüüd looge XML-dokument "Fly'is". Esiteks meenutame teile meelde, et dokumenti saab laadida mitte ainult URL-i, vaid ka tavalisest stringist. Allpool on näidatud, kuidas luua juurelement, mida saab seejärel kasutada ülejäänud elementide dünaamiliselt ehitamiseks (mida me oleme juba kaalunud tütarettevõtete manipuleerimise "):
Var xmldoc: ixmldompdocument; Root: ixmldomnode; Sõlme: ixmldomnode; S: Lagestus; ... s: \u003d '
Pärast XML-dokumendi ehitamist salvestage see failis Salvesta meetodi abil failis. Näiteks:
Xmldoc.save ('c: andmed \\ newcd.xml');
Lisaks faili salvestamisele võimaldab Salvesta meetod salvestada XML-dokumendi uue XMldomdocumentobjekti objektis. Sellisel juhul on dokument täieliku töötlemise ja selle tulemusena kontrollides selle struktuuri ja süntaksi. Allpool on näidatud, kuidas salvestada dokumendi teise objekti:
Menetlus TForm1.Button2Click (saatja: tofject); Var xmldoc2: ixmldompdocument; Alusta XMLDOC2: \u003d Codomdocument.create; Xmldoc.save (xmldoc2); Memo2.les.add (xmldoc2.xml); ... xmldoc2: \u003d nul; lõpp;
Kokkuvõttes märgime, et Salvestamismeetod võimaldab salvestada ka XML-dokumendi teistele COM-objektidele, mis toetavad ISTREAM, Iseetstream või ipeSciststreaminit liideseid.
XSL-mallide kasutamine
Umbes XMLdomnode Objekti valimise meetod, mainisime, et see annab paindlikum viis dokumendi oksad. Paindlikkus seisneb selles, et filiaalide valimiseks kriteeriumina saate määrata XSL-malli. Sellised mallid pakuvad võimas mehhanismi, et otsida teavet XML-dokumentides. Näiteks, et saada nimekirja kõik nimed muusika CD-ROM meie kataloogi, saate järgida järgmist päringut:
Et teada saada, kas kettad, mille esitajad Ameerika Ühendriikides vabastatakse, on taotlus moodustatud järgmiselt:
Sõlmed: \u003d root.Selectnodes (CD / artist ");
Allpool on näidatud, kuidas leida kataloogis esimene ketas:
Sõlmed: \u003d root.Selectnodes ('CD / pealkiri ");
ja viimane:
Sõlmed: \u003d root.Selectnodes ('CD / pealkiri ");
Bobi Dilani plaatide leidmiseks saate teha järgmise päringu:
Sõlmed: \u003d root.Selectnodes ('CD [$ mis tahes $ Arst \u003d "Bob Dylan"] / pealkiri ");
ja pärast 1985. aastat vabastatud kettade loendit tegeleme järgmise päringu:
Sõlmed: \u003d root.Selectnodes ('CD / pealkiri ");
XSL-süntaksi üksikasjalikum arutelu nõuab eraldi avaldamist. Intrue lugejatele ja lükata edasisi uuringuid, annan ainult ühe väikese näite XSL võimaliku kasutamise võimaliku kasutamise kohta. Oletame, et peame oma kataloogi tavalisele HTML-lauale teisendama. Traditsiooniliste viiside ärakasutamine peab lahendama kõik puu-harud ja iga vastavate silte moodustamiseks saadud elemendi jaoks
Kasutades XSL-i, me lihtsalt loome malli (või stiili tabeli), kus me näitavad, mida ja kuidas teisendada. Siis me kehtestame selle malli meie kataloogi - ja valmis: enne USA teksti XSL malli, mis teisendab kataloogi tabelis (loetelu 2).
XSL-malli ülesehitamise kood meie kataloogile näeb välja selline:
Menetlus TForm1.Button2Click (saatja: tofject); Var xsldoc: ixmldompdocument; Alusta xsldoc: \u003d koodomdocument.create; Xsldoc.load ('c: andmed \\ Data.xsl "); Memo2.Text: \u003d xmldoc.transformnode (xsldoc); Xsldoc: \u003d null; lõpp;
Täites meie arutelu XSL, tuleb öelda, et praegu seda keelt kasutatakse aktiivselt ümberkujundamiseks erinevate XML-dokumentide, samuti vormindamise dokumendid.
Järeldus
Üsna arusaadavatel põhjustel on ühes artiklis võimatu kaaluda kõiki Microsoft XML DOM-objekte ja tuua nende kasutamise näiteid. Siin me puudutasime ainult XML-i DOMi kasutamise põhiküsimusi rakendustes. Vahekaardil. 3 näitab kõiki Microsoft XML DOM-is rakendatud objekte.
Arvutivarja 12 "2000
Tellimuse lahendamise ülesanded Delphi
Delphi on teine \u200b\u200bprogrammeerimiskeel, millega õpilased kõige sagedamini tutvuvad õppeprotsessis. See on objektorienteeritud programmeerimise õppimise algus. I, üliõpilasel, tegi endale järelduse, et keelt hallata lihtsamat meetodit kui kalkulaatorit kirjutada. Isegi kui sa mõistad kahe numbri lisamise elementaarfunktsiooni, on see juba palju valgust.
Codegrader, Delphi 7, Lazarus on erinevad kompilaatorid, programmid, mis edastatakse teie poolt kirjutatud masina koodile, teisendades selle Zoliiki ja üheks. Need on kõik programmide loomise programmid ja mitte eraldi programmeerimiskeeli. Need kompilerid kasutavad delphi keele aluseks olevat Pascal programmeerimiskeelt, mis on sarnane tavalisele Pascalile sarnase süntaksiga, kuid see on funktsionaalne oluliselt erinev.
Mis on programmeerimiskeele süntaks?
See on vorming erinevate ettevõtjate kirjutamise vorm. Näiteks on Pascalil "" jaoks "tsükkel järgmine vorming:" N: \u003d 1 kuni k "jne.
C ++ programmeerimiskeeles on sama tsükkel kirjutatud mõnevõrra teisiti: (n \u003d 1; n me kirjutame kalkulaatori
See annab teile aru, kuidas objektid programmi koodiga on suheldes, mis on "muutujad", kuidas matemaatilised funktsioonid töötavad. Kõik programmeerimine igal juhul on arvutus. Mäng on ka programm, mis pidevalt kaalub, töötab numbrite ja numbriliste funktsioonidega. Programmeerimine on matemaatika lahutamatu.
Me kasutame Lazaruse arenduskeskkonna kirjutamiseks. Selle funktsionaalsus ei ole nii rikas kui, näiteks kodeller, kuid see on vaba juurdepääs ja on mõeldud õppima.
Arengukeskkonna avamine näeme elementide kuju ja paneeli. Siin on vorm.
Siin on elemendipaneel.
Esimene asi, mida me teeme, lisab kolm punkti, mida peate rakendama kahe numbri lisamise funktsiooni. Me vajame: "Tidit" kolme tükki ja "tbuttoni" arvus. Alloleval pildil kuvatakse need noolepaneelil. Klõpsake neile üks kord ja siis kord kuju ja nad ilmuvad sellele.
Need on sisendi ja tavalise nupu tekstiväljad. Teil tekib need elemendid peaaegu iga Windowsi programmi abil. Vaata.
Nüüd puhastage need kirjed. Klõpsake vahekaarti View. Ja klõpsa "Inspektor objektide. See aken ilmub.
Vajuta meie element "nupp" vormil ja muutke inspektori aknas väärtuse "pealkiri" ühelegi teisele. Näiteks sõna "ok". Klõpsake nuppu Enter. Me näeme vormis, nagu element on nime muutnud.
Lihtsalt tehke seda redigeerimisega, lihtsalt ei ümbernimetada, kuid me teeme need ilma sisuta. Me rõhutame neid omakorda ja puhastame inspektori tekstiväärtuse. Ärge unustage vajutada ENTER.
Selle tulemusena näeb meie vorm näeb välja.
Nüüd, kui meie kalkulaator teenis, peate registreerima vajaliku tarkvara koodi meie nupu protseduuri jaoks. Klõpsake nupul Element kaks korda ja avage allika toimetaja.
Kas vaata? Button1Click protseduur. See on menetlus, mis vastutab selle eest, mis juhtub, kui klõpsame ühel nupule. Ja järgmine peab toimuma: programm on vajalik kolmandas redigeerimisel, et tuua meid esimeses kahes valdkonnas kasutusele võetud numbrite summa. Kirjutame koodi.
Sellised lihtsad 5 rida koodi peame kirjutama. Kommentaarid ja selgitused on nähtavad ülaltoodud pildil. Pärast seda klõpsake seda nuppu.
Meie projekti koostamine koostatakse. See kogutakse programmis. Me sisestame numbreid kahes esimeses valdkonnas, klõpsa nupule ja saada summa väärtus.
Järeldus
Võite klõpsata nupul "Fail", seejärel "Salvesta kõike", valige kaust salvestamiseks ja teil on täieõiguslik programm, mille algus on töölaual võimalik teha. Nüüd proovige aru saada välja ise, et teil on vaja ümber kirjutada selles koodis nii, et programm jagatakse kahe numbriga ja ei volditud. Näpunäide. Te peate andmete tüübi muutma. Allpool olev video näitab sarnast näidet, kuid Delphi 7, mitte Lazarus.
Paljud Delphi programmeerijad, salvestamise seaded on seotud kasutades INI. Nende programmide failid. Selle meetodi kasutamine vähem tõsiste projektidega on vaja vältida, kuna see piirab paindlikkust, mis takistab programmi edasist laienemist. Tasub öelda, et selline lähenemine on üsna populaarne, tänu oma kasutusmugavusele ja sisseehitatud vahendite olemasolu arenduskeskkonnale.
Kuid ideaalne valik programmi seadete salvestamiseks on struktureeritud Xml Failid. Nende eeliseks on see, et parameetrite arvu ei pruugi olla fikseeritud. Selle paremini mõista, kaaluge konkreetset näidet.
Usearch programmis, kui klõpsate salvestamisel, kuvatakse kontekstimenüü, mis kuvab punktide loendi. Need elemendid on käsud, mis omakorda laaditakse alla seadete failist. Juhul, kui seaded salvestati sisse INI. Fail, programm võiks säästa ja laadida teatud arvu käske näiteks 10 või 50. Niipea kui vajate olulisemaks, peate koodi ümber kirjutama ja vastavalt selle uuesti koostama.
Lähenemise rakendamine Xml Failid, meil on võime alla laadida kõik parameetrid sektsiooni dünaamiliselt. Kõigile sellele muutub konfiguratsioonifail elegantsemaks, ilma parameetrite liigse numeratsioonita. Kuid standardtööriistad töötamiseks Xml Delphi on palju puudusi, nii et soovitan kasutada standardraamatukogu MSXML.. Tavaliselt on Windowsi perekondlike süsteemide vaikeosa.
Ühendamiseks MSXML.Me peame moodustama liidesefaili kõigi funktsioonide loendiga, importides selle Com Serverist. Kuidas importida liidese ei ole kirjutatud piisavalt üksikasjalikke artikleid, soovitan teil faili alla laadida Msxml2_tlb.pas. Juba valmis kasutama. Pärast faili allalaadimist asetage see oma projekti kõrval või visake Delphi lib libder. Seega saavad kõik loodud programmid moodulit kasutada. MSXML.See on piisav, et lisada MSXML2_TLB kasutusaladele.
Selguse huvides kaaluge järgmist näidet selle raamatukogu rakendamisest:
Protseduur Laadidata; Var xmldoc: domendokment; Juur: ixmldomelement; Alusta XMLDOC: \u003d Codomdocument.create; Xmldoc.load ("settins.xml"); Root: \u003d XMldoc.documellement; ShowMessage ("suurus / laius"). Tekst); Root: \u003d null; Xmldoc: \u003d null; lõpp;
Esiteks luuakse Domedocument-klassi eksemplar, mille järel seaded.XML-fail on mällu laaditakse. Vastavalt standardile Xml Fail peab sisaldama juuremärki (sel juhul konfiguratsioon), siis me peame selle funktsiooni kasutades saama Dokumentatsioon. Siis sisu sisu silte
Siin rakendatakse SELECSINGLENDE meetodit, mis võtab stringi parameetrina.
Tere tulemast! See blogi on pühendatud internetile ja arvutitele ning täpsemalt olid nad neile pühendatud.
Tõenäoliselt on kohe näinud, et palju aastaid ei ole kohapeal palju aastaid ilmunud. Jah, see on enamiku blogide saatus. Kui see projekt oli ambitsioonika ettevõtja ja autor, nagu paljudes teistes, kes kirjutas ajal, olid suuremahulised plaanid saada üheks parimaks vene blogijateks. Noh, kui te nüüd vaatate, siis nende blogidest, mis olid üheaegselt loodud minuga, olid enamik juba igavikus lahustunud. Ja ma sain välja kadunud aja blogi. Nii et jah, seda enam ei uuendata. Kuigi ma võitsin sellel saidil 2011. aasta blogi võistlusel.
Mul oli isegi idee selle kõike eemaldada, kuid siis vaatasin vana materjale läbi ja mõistsin, et nad võiksid lugejatele veel kasulikud. Jah, mõned artiklid on aegunud (kui mul on piisavalt jõudu, saavad nad asjakohaseid märke), kuid sait võib olla algajatele kasulik - siin saate lugeda interneti põhikontseptsioonidest, õppida kohandama Internet, aknad või isegi otsustada Linuxi minna. Nii et vaata pealkirju ja valige see, mis sobib teile.
Ja lõpuks, ma loodan, et see on rohkem kui lihtsalt blogi, kuid tõeline Interneti-juhend. Sait võib leida kataloogirežiimis, kus kõik kättesaadavad artiklid on struktureeritud kategooriate kaupa. Ja kes teab, et võib-olla uued kvaliteetsed artiklid hakkavad siin ilmuma.
Sander
Picodi.ru on soodushinnaga portaal rahvusvaheliste kupongide, Poola ekspert säästmise ja odavate ostude. Polasse peetakse üheks maailma kõige ökonoomsemaks rahvasteks, mistõttu ei ole üllatav, et seda tüüpi projekt on kasvanud Poola käivitamisest Kodyrabatowe.pl. Mis võib olla kasulik sellele portaalile tavalisele Interneti-kasutajale Venemaal?
Kaasaegsed Android-telefonid on rohkem kui telefonid. Te harjutate paigaldatud programmide komplektiga, teie kõned ja tekstisõnumeid, fotode kogusid ja palju. Aga aeg läheb ja täielikult paigutatud seade hakkab aeglustama, viga või lihtsalt kaotab esindusliku vaate, sest ekraanil kriimustuste järel tekitatav vaade. On küsimus uue telefoni valimine ja Android-telefoni muutmine. Ja kui valiku küsimus, me nüüd mööda partei, siis "liigub" uue telefoni endiselt tõsine probleem - ma absoluutselt ei taha alustada kõiki andmeid nullist. Siin me räägime sellest täna.
Enamik selle blogi lugejatest, tõenäoliselt kunagi versiooni kontrolli versioonidest ja ei tule lähitulevikus. Ja vabandust. Seda väga kasutajasõbralikku leiutist kasutatakse laialdaselt programmeerijad, kuid minu arvates võib see olla väga kasulik ja nende jaoks aktiivselt töötavad tekstidega. Aga tõenäoliselt ei ole praegu versiooni juhtimissüsteemi, mis oleks lihtne kasutada töö "Office'i" (Microsoft Office) jaoks. Sellegipoolest arvan, et artiklis sätestatud materjal võib kõigi lugejate jaoks olla huvitav.
Kui sa arvasid, kuidas teie TV-filme üle vaadata võrgu ja Interneti-ühenduse juurde pääseda, on see artikkel teie jaoks. Ei, ma tean, et mõnedel televiisoridel on nutika teleri funktsionaalsus, kuid ma pole seda kunagi näinud. Ilmselt näitas Google'i hiljuti täiesti uimastavat seadet koheselt tundega. Me räägime MEDIA STONEERi ChromeCastist (Chromkast), täiuslikuma ja taskukohase versiooni eelmise aasta soositud mängija Nexus Q.
Dongle Cromkast, mille mõõtmed ei ületa 2 tolli, ühendab teleri HDMI-pordiga ja võimaldab teil nautida streaming veebisisu vaatamist. Juhtimisjuhtimise juhtimiseks saate kasutada mis tahes seadet (tablett, PC, nutitelefoni), mis põhineb IOS-i, Windowsi, Android või Mac OS-i tööplatvormil.
See artikkel on pühendatud Android-süsteemi mäluseadmele, probleemidele, mis võivad tekkida selle puudumise ja nende lahendamise tõttu. Ma ise ei olnud nii kaua aega tagasi, et minu Android telefon hakkas regulaarselt väljastama sõnumeid mälupuuduse kohta konkreetse rakenduse loomise kohta. Mis oli minu jaoks väga kummaline, hoolimata asjaolust, et turul kirjelduses oleks pidanud olema umbes 16 GB ja suurendasin seda mahtu ka täiendava mälukaardi abil. Probleem oli aga ja ma pidin enne õige lahenduse leidnud põhjalikult tinkerit, mis ei nõua juurjuurdepääsu kättesaamist või telefoni täielikku taastumist tehase olekusse.
Hiljuti pööratakse e-äri süsteemide ehitamisele suurt tähelepanu või kui neid nimetatakse ka - B2B (äri äri). Arvestades soovitusi ehitamise Exchange Streaming süsteemid koordineerivad Interneti-tehnoloogiate - WWW Consortium: Rõhk on tehtud XML-tehnoloogiate ja hoone XML dokumendi vahetussüsteemide.
XML-i kasutamine e-äri kasutamisel on B2B-süsteemide kõrge efektiivsus madalate kuludega selle loomiseks, mis on tingitud struktureeritud teabe selgest ja visuaalsest kujutist, võime kasutada kaasaegseid võrguprotokolle ja luua reaalajas ärisüsteeme.
Teabe esitluse sõltumatus XML-dokumentide kujul võimaldab elektroonilises äris osalemist erinevates osades osaleda üksteisest sõltumatu.
Kõigis süsteemides ehitatakse vahetus tavaliselt sama skeemiga, kasutades HTTP-päringuid. SSL-protokolli rakendatakse SSL-i protokollina (kuid see on eraldi teema).
Üks võimalikke valikuid XML-sõnumite töötlemiseks on ehitada bin / CGI (ISAPI) -News või COM (server) komponendid moodustavad või töötlemise XML-dokumente.
Ühest küljest toimib rakendus kliendina, mis postitamisrežiimis väljastab HTTP-päring HTTP-päringu, on veebiserver küljele, mille külje töötlemine ja vastus töödeldakse. Infovahetus kasutab XML-dokumente.
Üks tõhusamaid rakendusvalikuid on olemasoleva XML parseri kasutamine, mis toetab DOM mudelit. Selline parser on Win`98 ja lahutamatu osa IE 4.7 ja üle selle (WIN`95) ja esindab COM-server asub MSxMl.dll raamatukogus.
Komponendi objekti mudel (com) on kapseldatud andmed ja meetodid üheks olemuseks ja viis nende juurde pääsemiseks liidese süsteemi kaudu. Delphi on lihtsalt kättesaadav juurdepääsu com objekti klasside (mitu klassi võib lisada ühes com server). Juurdepääs objektidele viiakse läbi klassi astme alustamise kaudu liidese süsteemi kaudu. Liideste kirjeldus viiakse läbi liidese määratluse keel (IDL), mis on võimalik läbi viia keskmise vahendid automaatselt.
Delphi tähendab import COM-serverist msxml.dllIDL-liidese kirjeldus Failid on ehitatud ja raamatukogu tüüpi binaarkirjeldus on TLB. See operatsioon viiakse läbi süsteemi menüü kaudu: Projekt | Tüüp Raamatukogu import:(pilt 1). Ekraanile ilmub järgmine dialoogiboks (joonis 2), kus soovite valida COM-objekti (meie puhul, on objekt registreeritud "Microsoft.xmldom (versioon 2.0)") ja looge TLB-fail (nupp) Loo üksus.). Kasutades TLB-faili, genereerib keskkond "Paskalevsky" faili kirjeldus com server - msxml_tlb.pas
MSXML_TLB.PAS-fail kirjeldab kõiki liideseid, konstantide ja com serverid.
Juurdepääsuks Com elemendi objektidele on see direktiivis vajalik Kasutusalad.lisage raamatukogu kirjelduse faili nimi (msxml_tlb.pas). Allpool on kõige lihtsam programm, mis kasutab dom-standardse MSXML.DLL analüsaatori, mis laadib XML-dokumenti alla laadida ja kuvab selle memo1 tekstikastis elementi.
kasutusalad. Aknad, sõnumid, sysutils, klassid, graafika, juhtimisseadmed, vormid, dialoogid, Oleserver, MSXML_TLB, STDCTRLS; tüüp Tform1 \u003d. klass(TFORM) nupp1: tbutton; MEMO1: TMEMO; menetlus. Button1Click (saatja: tofject); lõpp; var. Vorm1: TForm1; rakendamine ($ R * .dfm) Menetlus.TForm1.button1click (saatja: tofject); // deklaratsiooni Soklass objekti domendokment; var.codoc: koodomdokment; // klass, mis on kooskõlas Idomdocumentliidesega; var.DOC: ixmldocument; alusta. // Domendocument objekti eksemplari loomine; DOC: \u003d Codoc.create; // helistage režiimi meetodile Domedokment-objekti eksemplari; Doc.oad ("Data.xml"); // Juurdepääs Domendocument Objekti XML-i kinnisvara astmele; MEMO1.TEXT: \u003d DOC.XML; lõpp; lõpp.Dom kontseptsioon - objekti dokumendi mudel
Iga XML-dokument on esindatud komplektina paljude objektide (klasside) komplektina, mille juurdepääs üksikutele elementidele (objekti väljad) on võimalik. DOM - liidese kirjeldab juurdepääsu nii lihtsale domringi või carchandata objektide ja osade või eraldi XML elemendid dokumendi: domfragmentelektri, Domnode, domeli.
Järgnevalt on kõige olulisemad omadused ja meetodid XMldomdocument, XMldomnode, XMldomnodelile. Tuleb märkida, et mudel MSXML.DLL XML analüsaator, MSXML.DLL XML analüsaator, mida allpool esitatud MSXML.DLL XML-analüsaator, kasutavad MSXML.DLL XML analüsaator kui W3C mudeli poolt heaks kiidetud Dom konsortsium.
Interface Dom objektide täielikum kirjeldus võib leida
Xmldompdocument objekti | |
Esitab objekti hierarhia tipptasemel ja sisaldab meetodeid dokumendiga töötamiseks: selle allalaadimine, analüüs, elementide loomine, atribuudid, kommentaarid selles jne. . | |
Omadused | |
Async. | Voolu töötlemise režiimi tuvastamine |
Parserror | Tagastab viide XMLdomomparseErrori vea töötlemise objektile |
Luba - keelata dokumendi kontrollimine. | |
url | Tagastab dokumendi URL-i |
dokumentatsioon | Sisaldab viidet dokumendi juureelemendile XMldomemement-objektina. |
Meetodid | |
koormus (URL) loadxml (xmlstring) |
Laadib XML-dokumenti |
salvesta (Objtarget) | Salvestab XML-dokumendi faili |
katkestama. | Dokumendi allalaadimise ja töötlemise protsessi katkestamine. |
credeatTribute (nimi) | Loob uue atribuudi määratud nimega praeguse elemendi jaoks. |
kreditenode (tüüp, nimi, nimeSpaceri) | Loob kindlaksmääratud tüübi ja pealkirja sõlme |
createelement (Tagname) | Loob dokumendi elemendi määratud nimega. |
createTextnode (andmed) | Loob dokumendi sees teksti |
geteelementsbyTagname (Tagname) | Tagastab lingi dokumendi kirjete kogumisele määratud nimega |
nodefromid (IDString) | Otsi element identifikaatori järgi |
Xmldomnode objekt | |
Xmldomnode objekt, mis rakendab põhilist domliidet Sõlme., Mille eesmärk on manipuleerida dokumendipuu eraldi sõlme. Selle omadused ja meetodid võimaldavad teil saada ja muuta täielikku teavet praeguse sõlme - selle tüübi, nimi, täielik nimi, täielik nimi, selle sisu, lasteelementide loend jne. | |
Omadused | |
nomename, Basename. | Tagastab praeguse sõlme nime. |
eesliide. | Tagastab nimeruumi eesliide. |
andmetüüp | Määrab sisu tüüp praeguse sõlme |
nodetype, Nodetystring | Tagastab praeguse sõlme tüübi: |
atribuudid. | Tagastab praeguse sõlme atribuutide nimekirja XMldomnamendemapi kollektsiooni. |
tekst. | Tagastab praeguse toetuse sisu teksti kujul. |
xml | Tagastab praeguse toetuse XML-i esindatuse. |
nodevalue. | Tagastab sisu praeguse sõlme sisu. |
childnods. | Tagastab lapse elementide nimekirja XMldomnodelilusena. |
esmaajal, Lastelchild. | Tagastab esimese / viimase lapse elemendi |
eelmineSizing, Nextibling | Tagastab eelmise / järgmise õendusabi elemendi. |
vanemnodeerimine. | Sisaldab viidet vanemaelemendile. |
omanikdokument | Tagastab osuti dokumendile, kus praegune sõlme asub. |
Meetodid | |
appechild (Newchild) | Lisab uue lapse elemendi praegusele sõlmele. |
inseSeBefore (Newchild, mittevastavus) | Lisab lapse sõlme, millel on see resferaadilise parameetri määratud sõlme praeguses substree "vasakul". |
klonenood (sügav) | Looge praeguse elemendi koopia. |
getaatribute.(Nimi) getaatributenode. (Nimi) sETATTRIBUTE (nimi, väärtus) sETATTRIBUTENODE (XMLDOMATTRIBUTE) |
Juurdepääs atribuutidele (loomine, lugemine, kirjutamine) objekti. Nimi - atribuudi nimi, väärtus - selle väärtus. Tagastab xmldomattribute objekti väärtuse. |
asenda (Newchild, Oldchild) Removerchild (Oldchold) | Asendamine Oldchildi objekti praeguse nimekirja tütarettevõtjate nimekirja Newchildis. Oldchildi objekti eemaldamine |
selected vali | Tagastab otsingumustri või esimese sõlme xmldomnodelisti objekti |
transformanode (styesheet) transformanodetobject (stiilis, Outtobject) |
Määrab stiililaua toetamiseks praeguse sõlme ja tagastab stringi - tulemus töötlemise. Viide Domedocument objektile edastatakse parameetrina, milles asuvad XSL-juhised. |
XML-i kasutamine äris.
Selgema pildi jaoks on vajalik selgitus ja miks see kõik on vajalik sellega, kuidas see mõista, kuidas see toimib:
B2B või ettevõtte ERP-süsteemi ehitamisel XML-i dokumentide teabevahetuse korraldamisel Prom-I ettevõtete või filiaalide vahel kasutatakse tõhusalt tõestatud infosüsteemi HTTP-protokollide kättesaadavate veebiserverite alusel.
Ühest küljest toimib rakendus kliendina, mis postitamisrežiimis väljastab HTTP-päringu, teiselt poolt, veebiserver asub küljel, mille taotlus töödeldakse ja vastus. XML-dokumente kasutatakse vahetustena.
Näiteks on raamatupidamisprogrammi lihtsa ettevõtte ERP-süsteemis (ACS-i raamatupidamine) vaja moodustada teatud taotluse esitamise ja edastada selle harule, millel on ladu (ACS Warehouse). Kunst on sarnase probleemi seadistus süsteemi B2B loomisel, kui ettevõte taotleb toodete kättesaadavust (tellimuse ostmiseks) tarnija V.
Ettevõte A ja tema programm tegutseb kliendina. Laos teenindab tarnija, kellel on SQL Serveris ladu BD kompleks. Exchange viiakse läbi ettevõtte veebiserveri tarnija V. kaudu
Allpool on järgmine tüüpiline vahetus algoritm:
Joonis 3.
- Ettevõte A.algatab process A.(Toote järjekorras), mis tegutseb veebi kliendina.
- Process A.loob XML-dokumendi (näiteks arve) ja edastab selle Web tarnija server V. Post HTTP-päringuna URI-i - töötlemise taotluse identifikaatorina. URI võib olla sama igat liiki dokumentide või üksikute puhul iga tüübi puhul. See kõik sõltub struktuuri B2B (Web) server.
- Veebiserver analüüsib taotlust ja genereerib serverit Protsess B.Vastates XML-dokumendi parameetrina.
Protsess veebiserver käivitatakse ja töödeldakse kas ASP-leheküljel, CGI (ISAPI) - rakenduse või Java Sevrlet (Server rakendus) - Protsess B.- Loob taotluse SQL andmebaasi serverisse.
- SQL Server teeb andmebaasi vajalikud toimingud, moodustab vastuse ja tagastab selle. Protsess B..
- SQL Serveri vastus Protsess B. Loob XML-dokumendi (vastus) ja võimaldab tal vastusena HTTP-päringule kliendirakendusele.
- Veelgi enam, sõltuvalt kliendi poole olukorrast moodustub kas uus HTTP-päring või seanss lõpeb.
Mõned sõnad dokumendihalduse korraldamise kohta.
XML-i vahetussüsteemi üldreegel on:
- esiteks- elektrooniliste dokumentide voolu ja nende struktuuri voolu arendamine;
- teiseks- protsesside funktsioonide (subprocesses) funktsioonide arendamine s.t. Mis funktsiooni, mille suhtes XML-dokument rakendab iga protsessi.
Iga XML-dokument, nagu HTML-dokument, peaks koosnema sõnumi päisest (teabevahetaja) ja sõnumiorganisatsioonist (päringule selle teabe päringule, mida märgistatakse taotlusele vastamiseks). Selleks, et XML-dokument on õigesti moodustatud, on vaja näiteks kahte komponenti "Päise" ja "taotlus" raamitud silte, näiteks. Standarddokumendi vaade on esitatud allpool:
Pealkiri (joonis 4), erinevalt dokumendi HTML-i, peaks sisaldama teistsugust teenindusandmeid, sealhulgas teavet edastatud dokumendi tüübi kohta. Dokumendi informatiivne töötlemine on kättesaadav, s.o. Mõelnud osa on sildiga raamitud. Tuleb märkida, et päise struktuur peaks olema ühendatud igasuguste dokumentide jaoks.
Serveri käigus töötava protsessi jaoks on töötlemise algoritm eelistatavalt (kuid vajalik) ehitamiseks järgmiselt:
Joonis 6.
Mõned peamised hetked kliendi osa loomisel
Nagu juba selgitatud, kasutab XML-dokumendi loomisel oma esindatust dom mudeli kujul. Allpool on XML-sõnumi päise programmi Delphi teksti teksti näide.
menetlus.Thread1.HeaderCreate (saatja: tofject); var. // klasside teade on vaja luua Codoc: koodomdokment; // xmldomdocument objekti Doc: Domdocument; R: Ixmldomelement; Sõlme: ixmldomelement; // domtext txt: ixmldomtext; // domattribute attration: ixmldomattribute; alusta. // DOM-dokumendi loomine DOC: \u003d Codoc.create; Doc.SET_ASYNC (FALSE); // esialgse algatamise domineerimine Doc.loadxml ("Tuleb märkida, et teatis Codoc: Codomdocument ja Doc: Domdocument muutuja, samuti loomise loomise meetod (doc: \u003d Codoc.create;) viiakse läbi üks kord. Muutuse deklaratsioon on ülemaailmsete muutujate kirjelduse jaotises, mitte kohalikus menetluses, nagu on näidanud nähtavuse nähtavuseks (s.o Domendokmenti üks globaalne muutuja).
Ülaltoodud programmi tulemus on loodud päis, seoses meie XML-dokumendi näitega: kujutatud joonisel 5 kujutatud.
Joonis 5.
Joonis 6.
Põhiline eelis edastada teavet kujul XML-dokumentide kujul on see, et on võimalik moodustada sõnumi, kasutades sõltumatu struktuuri tabelite DBMS nii vastuvõetud ja edastatud küljel. Kasutades meie näidet, siis on tal kohustatud edastama informatsiooni ettevõtte A arvete kohta joonisel fig 6 näidatud struktuuri DBMS-is
Arve sisaldava XML-dokumendi moodustamine, ehitatud SQL-i taotlus (päring A) teabe kohta arve kohta:
Valige * Invoice_General Kus Invoicenum \u003d: Num ValigeKaubad, quulity, hind, Hz_cod Alates.Kaubad Kus Invoicenum \u003d: Num //: Num - parameeter, mis määrab arve number.Allpool on osa programmist, mis moodustab XML-dokumendi keha:
menetlus. Thread1.databodycreate (saatja: tobject); var. // klasside ja XMldomdocument // Codoc: Codomdocument; // peab olema kogu mooduli jaoks globaalne. // doc: domendokment; // domeliteobjektide teadaanne R: Ixmldomelement; // domelite; Sõlme, Node2: Ixmldomelement; Node3, Node4: Ixmldomelement; // domtext txt: ixmldomtext; Str: string; // Inveroicumber: täisarv; - Globaalne muutuja - // Masching 987654 // Querya, Queryb: String; - Ülemaailmne muutuja, // taotluste säilitamine // Querya - taotlus ja üldine teave arve // \u200b\u200bQueryb - päringu B-teabe kohta B-informatsioon // Arve (vt teksti) alusta. Query.Close; // vt teksti "Taotlus A" Query.Text: \u003d Querya; // taotleda täitmist Query.execSQL; Query.open; // Get aadressi juure element R: \u003d doc.get_documellement; Node2: \u003d Doc.CreatEelement ("taotlus"); // luua domelite (sildi) Sõlme: \u003d Doc.creatEelement ("arve"); // elemendi lisamine root R.Appendchild (sõlme2); // elemendi lisamine Node2. Appenchild (sõlme); // luua domelite (sildi) Node3: \u003d Doc.CreatEelement ("saastumine"); // elemendi lisamine Sõlme. Appenchild (sõlme3); // Apense "Salvesta" väljale Str: \u003d Query.fieldbynimi ("Salvestage"). // Tekstiõlme loomine \u003d Field Väärtus // sõlme loovutamise väärtus // teksti sõlme, muutuja str Node.ApendChild (txt); // Sarnased toimingud sildileSelle protseduuri tulemusena moodustatakse XML-dokumendi järgmine tekst:
Avatud meetodit kasutatakse päringu moodustamiseks. Ixmlhttptprequest:
menetlus. Open (CONST BSTRMETHOD, - meetod tüüp \u003d "Post" Bstrorl, - URL Varasync Server Aadress, - Asünkroonne / sünkroonse kommunikatsioonirežiim \u003d TRUE BSTRUSER, - kasutajanimi BSTRPasswordi autentimiseks) - paroolDokumendi töötlemise serveri osa loomine
Nagu varem märgitud, saab HTTP-päringu töötlemist teostada kas CGI-rakenduste või Java servletide. Võimalikud võimalused ASP-lehekülgede kirjutamiseks. Kuid sel juhul on andmeedastus võimalik ainult päringu stringi abil "Get" abil. Kuigi ASP-lehekülje taotluse HTTP-töötlemine töötab tõhusamalt CGI-rakenduses. Kuid minu arvates, ilma mis tahes vahe, kuidas töödelda ja mis veelgi olulisem lahendada küsimus - kuidas ehitada töötlemisprogrammi ja mitte Mis vahenditega.
Kui me üle XML-dokumendi moodustamise valikud eelmise peatükis, siis ülesande server taotluse on vastupidine XML dokumentide. Allpool on osa programmist, mis analüüsib XML-dokumenti:
menetlus.Thread1.dataparser (saatja: tobject); var. // domeliteobjektide teadaanne R, fnode: ixmldomelement; Tn, failinimi: string; Parm: string; // Soklass teadaanne ja Codocxml, CoDocxsl, CodocreSuult: Codomdocument; // xmldompdocument objekt Xmldoc, xsldoc, tulemusDoc: domendokment; // httpstr: string; - http päringu stringi sisaldav ülemaailmne muutuja Alusta. XMldoc: \u003d CoDocxml.create; Xmldoc.loadxml (httpstr); // Get aadressi juure element R: \u003d doc.get_documellement; // elemendi väärtuse saamine FNODE: \u003d R.SelectSinglenode ("// kirjupedoktuuri"); // saada atribuutiväärtuse ID \u003d "tellimus" FileName: \u003d fnode.getsetttibute ("ID"); // ja moodustades failinime tellimuse.xsl FileName: \u003d FileName + ". XSL"; // dokumendi xsldoc loomine Xsldoc: \u003d codocxsl.create; Xsldoc.loadxml (failinimi); // XMLDOC-dokumendi loomine TulemusDoc: \u003d CodocreSult.create; // Sünkroonse töötlemise režiimi seadistamine Tulemusdoc.set_async (FALSE); // Debureerimiskontrolli installimine Tulemusdoc.Validateonparaas: \u003d tõsi; // kollaps xmldoc xsl malli Xmldoc.transformnoc, tulemusdoc (xsldoc, tulemusdoc); // muutuja str on määratud teksti väärtus // saadud dokument. Str: \u003d tulemusdoc.Text; // otsinguelement FNODE: \u003d R.SelectSinglenode ("// inVuicumber"); // ja saada elemendi väärtuse Parm: \u003d fnode.Text; // sulgeb juurdepääsutaotluse Query.Close; Query.Text: \u003d str; // parameetri väärtuse määramine Query.params.asstring: \u003d Parm; // taotleda täitmist Query.execSQL; lõpp;Kogu parsimise valik on rakendada XSL-malli, mis on moodustatud iga dokumendi tüübi jaoks eraldi. Analüüsi tulemus on SQL päringu string. Sellest tulenevalt teeb genereeritud SQL-i päringu stringi täitmine vajalikud DBMSi vajalikud muudatused.
Malli kaudu parsimise kasutamise eeliseks on ka selles, et saadakse mõnede andmete paindlikkuse ja algoritmi toimimise täielik sõltumatus programmi koodist. Allpool on XSL-malli tekst vastavalt dokumendi tüübi töötlemiseks.
Ülaltoodud näite selgitust tuleb märkida, et siltepaaride kasutamine ja formaalne, sest Pärast parsimist peaks saadud XML-dokumendis esinema vähemalt üks sõlme. Tulemusdoc.Text meetod määrab XML-dokumendi tulemusDoc analüüsimisel saadud teksti väärtuse. Sel juhul on väärtus kõik, mida siltepaarid on raamitud ja, st. Oleme moodustanud SQL taotluse.
Programmi kirjutamise teine \u200b\u200bomadus tuleb märkida SQL parameetri kasutamise võimalus : Num. Parameetri kasutamine võimaldab teil lihtsustada XSL-malli teksti. Määratlus XML-dokumendi sõlmede vastavate elementide väärtus määratakse esialgu vastava sõlme nime valimisel näiteks:
Lühidalt XSL kohta
XSL lühend pärineb laiendatavast stiilis keele - stiilis tabeli vormindamise keel (XML-andmed). Kuna XML-andmete vormindamiseks kasutatakse XML-andmete vormindamiseks laiendatud stiilis keelt (XSL) päisest (XSL). W3C XSL määratluse järgi koosneb kahest osast:
- XSLT - XSL transformatsioon. Keele kasutatakse teisendada või vormindada (transformeerida) XML dokumente. Seega, kasutades XSLT-d, saame erinevate andmete ja andmeedastuse vormide erinevate osade.
- Vormindamise elemendid. Need elemendid hõlmavad kõiki tüpograafiliste andmete disaini elemente, pärast seda, kui neid töödeldakse XSL-i abil. Kasutatakse ainult HTML-lehekülgede moodustamiseks.
Kasutades XSLT-d, saame valida andmeid XML-faililt, mida vajate, ja korraldage need kasutajale vormis. Näiteks meie puhul muutsime XML-andmed SQL-i päringuna. Klassikaline XSL-rakendus on tavaliselt vormindamise andmed HTML-lehekülgedena või haruldase esindatusena RTF-failide kujul.
XSL-failis kirjeldatakse malli (malli), mille kohaselt viiakse läbi XML-andmete konversioon. XSL-i mallide juurde naasmine võib XSLT-s (Direktiivides) eraldada järgmisi elemente:
XSL direktiiv | kirjeldus |
---|---|
xSL: Rakenda-mallid | Direktiiv, mis näitab asjakohaste mallide atribuudi rakendamist Vali \u003d "Malli nimi" |
xSL: atribuut. | loob atribuudi puu ja lisab selle väljundlemendile, nimi \u003d "atribuut nimi" parameeter, nimeruumi - URI nimeruumi (nimeruumi eesliide) |
xSL: kõne-mall | põhjustab malli, atribuudi nimi \u003d "Uri mallil" |
xSL: valige. xSL: millal. xSL: vastasel juhul. |
valiku tegemine seisundi järgi XSL: Kui expr \u003d "Arvutamine ekspressiooni skripti", keel \u003d "Keelenimi" test \u003d "Arvutatud väljend" |
xsl: kommentaar | genereerib väljunddokumendi kommentaari |
xSL: koopia xSL: koopia-of |
kopeerib praegune sõlme väljundallikas või lisab dokumendi fragmendi sõlmele, kus valige \u003d "allika sõlme nimi" Atribuut |
xSL: element | loob väljundielemendi nime järgi, atribuudi nimi \u003d "Element nimi", nimeruumi \u003d "URI viide nimeruumile" |
xSL: igaüks | re-rakendage malli kõigile sõlmede loendisse sõlmedele, valige atribuut Seade nimekirja sõlmedest. |
xSL: kui. | tingimuste kontroll määrab katse atribuut väljendina |
xSL: Lisage | sisaldab välise malli, atribuut href \u003d "URI viide" |
xSL: väljund | määrab väljundi tulemus, meetodi atribuut võib olla "XML", "HTML" või "Tekst" |
xSL: param | määrab parameetri väärtus, nimi \u003d "Parameetri nimi" atribuut, valige \u003d "Väärtus" |
xSL: töötlemise juhendamine | loob juhiseid töötlemiseks, atribuutide nimi \u003d "Nimi Protsessi juhised" |
xSL: Sorteeri. | sorteerib paljud sõlmed, atribuudid Vali \u003d "Nood nimi", Data-Type \u003d andmetüüp ("Tekst" | "number" | |
xSL: stiilis. | määrab XSL-malli dokumendi, on XSLT juureelement |
xSL: mall. | määrab XSL-malli, nimi \u003d "URI eesliide atribuut malli nimele", Match \u003d "Märkus sõlmele, millele mall kehtib" |
xSL: Tekst. | genereerib teksti väljundvoog, keelata väljund-põgenemine \u003d "Jah" või "Ei" atribuut näitab võimalust luua ESC tähemärki |
xSL: väärtus | lisab valitud sõlme väärtuse tekstina, valige SELECT \u003d "Pointer sõlme" atribuut, millest väärtus on võetud |
xSL: muutuja | määrab muutuva piiride väärtuse, nimi atribuut \u003d "muutuja nimi", valige \u003d "Arvutage muutuja väärtus" |
xSL: parameetriga | rakendab parameetrit malli, nimi atribuut \u003d "parameetri nimi", valige \u003d Expression arvutada praeguse konteksti, vaikeväärtuse "." |
Järeldus
Kokkuvõttes tuleb märkida, et standardse XML-parseri kasutamine msxml.dllsee ei ole ainus vahend XML-dokumentide parsimise ja loomise vahend. Näiteks XML-dokumentide loomiseks komponentide tõhusaks kasutamiseks Tpageproduser.ja Ttableproduser.. Aga see artikkel rõhutab ainult laius ja võimalust rakendada dom mudel praktikas.
Autor on väga tänulik tagasisidet teema asjakohasuse kohta, üldise sisu, esitluse stiili, samuti kõik muud märkused, mis aitavad veelgi parandada artiklite kogumise kvaliteeti ja raamatute vabastamist, mis katab XML-dokumentide kasutamise praktilise poole teema e-kaubanduses. Lisateavet elektrooniliste dokumentide rakendamise praktilise külje kohta saate õppida aadressilt www.edocs.al.ru autori veebisaidil, samuti on plaanis asetada allikas tekstid ja näited.