Jak vytvořit xml soubor delphi. Internetový cestovní průvodce – veškerá zábava na webu. Několik slov o organizaci toku dokumentů
Vítejte! Tento blog je o internetu a počítačích, respektive jim byl věnován.
Pravděpodobně je okamžitě jasné, že se na webu již mnoho let neobjevily žádné nové články. Ano, to je úděl většiny blogů. Tento projekt byl kdysi ambiciózním počinem a autor, stejně jako mnoho dalších, kteří v té době psali, měl ambiciózní plány stát se jedním z nejlepších ruských blogerů. No, když se teď podíváte, tak z těch blogů, které vznikly současně s mým, už většina zmizela na věčnosti. A na blog jsem prostě neměl dost času. Takže ano, již se neaktualizuje. I když jednou jsme s tímto webem vyhráli soutěž "Blog of Runet 2011".
Dokonce mě napadlo to všechno smazat, ale pak jsem zrevidoval staré materiály a uvědomil jsem si, že mohou být čtenářům stále užitečné. Ano, některé články jsou zastaralé (pokud budu mít dost síly, dostanou patřičné poznámky), ale web se může hodit například začátečníkům – zde si můžete přečíst o základní pojmy Internet, naučte se konfigurovat Internet, Windows nebo se dokonce rozhodněte přejít na Linux. Podívejte se tedy do rubrik a vyberte si tu, která je pro vás ta pravá.
A přesto doufám, že to není jen blog, ale skutečný průvodce internetem. Stránky lze prohlížet v adresářovém režimu, kde jsou všechny dostupné články strukturovány podle kategorií. A kdo ví, třeba se tu jednou začnou objevovat nové kvalitní články.
Sander
Picodi.ru je slevový portál od International Coupons, polského odborníka na úspory a levné nakupování. Poláci jsou považováni za jeden z nejekonomičtějších národů na světě, a tak není divu, že tento typ projektu vyrostl z polského startupu kodyrabatowe.pl. Jak může být tento portál užitečný běžnému uživateli internetu v Rusku?
Moderní telefony s Androidem jsou víc než jen telefony. Na psaní si zvyknete nainstalované programy, do historie vašich hovorů a textové zprávy, sbírky fotografií a další. Ale čas plyne a zařízení, které vám vyhovuje, se zcela zpomaluje, vadí nebo jednoduše ztrácí svůj prezentovatelný vzhled kvůli čipům na pouzdru nebo škrábancům na obrazovce. Vyvstává otázka výběru nového telefonu a výměny telefon s Androidem... A když teď obejdeme otázku volby, tak „stěhování“ do nový mobil zůstává vážným problémem – absolutně nechcete spouštět všechna data od nuly. To je to, o čem budeme dnes mluvit.
Většina čtenářů tohoto blogu se s největší pravděpodobností nikdy nesetkala se systémy pro správu verzí a ani v blízké budoucnosti na žádný nenarazí. Je to škoda. Tento extrémně pohodlný vynález je široce využíván programátory, ale podle mého názoru by mohl být velmi užitečný pro ty, kteří aktivně pracují s texty. Pravděpodobně však nyní neexistuje jediný systém správy verzí, který by bylo snadné začít používat pro „kancelář“ ( Microsoft Office) práce. Přesto si myslím, že materiál uvedený v článku může být zajímavý pro všechny čtenáře.
Pokud jste přemýšleli o tom, jak sledovat filmy v síti z vašeho televizoru a jít online, tento článek je pro vás. Ne, vím, že některé televizory již funkci Smart TV mají, ale nikdy jsem neviděl, že by fungovala správně. Zřejmě proto nedávno korporace Google předvedla naprosto ohromující zařízení, které se okamžitě stalo senzací. Mluvíme o streameru médií Chromecast (Chromecast), pokročilejší a dostupnější verzi loňského katastrofálního Nexus Q.
Dongle Chromecast, který není větší než 2 palce, se připojuje k portu HDMI TV a umožňuje vám vychutnat si sledování streamovaného webového obsahu. K ovládání streameru můžete použít jakékoli zařízení (tablet, PC, smartphone) založené na operační platformě iOS, Windows, Android nebo Mac OS.
Tento článek je věnován zařízení systémové paměti Android, problémům, které mohou nastat kvůli jeho nedostatku, a jak je vyřešit. Není to tak dávno, co jsem sám čelil skutečnosti, že můj telefon s Androidem začal pravidelně vydávat zprávy o nedostatečné paměti při pokusu o instalaci aplikace. Což pro mě bylo velmi zvláštní, vzhledem k tomu, že podle popisu na trhu tam mělo být cca 16GB a navíc jsem tento objem navýšil přídavnou paměťovou kartou. Vyskytl se však problém a musel jsem hodně makat, než jsem našel správné řešení který nevyžaduje přístup root ani úplné obnovení telefonu z výroby.
XML se stále více používá k ukládání informací a jejich výměně mezi aplikacemi a webovými stránkami. Mnoho aplikací používá tento jazyk jako základní jazyk pro ukládání dat, zatímco jiné jej používají pro export a import dat XML. Je tedy čas, aby vývojáři začali přemýšlet o tom, jak lze data XML použít v jejich vlastních aplikacích.
V tomto článku se podíváme na XML Document Object Model (DOM) a implementaci XML DOM od společnosti Microsoft.
XML DOM je objektový model, který poskytuje vývojářům objekty pro načítání a zpracování souborů XML. Objektový model se skládá z následujících základních objektů: XMLDOMDocument, XMLDOMNodeList, XMLDOMNode, XMLDOMNamedNodeMap a XMLDOMParseError. Každý z těchto objektů (kromě XMLDOMParseError) obsahuje vlastnosti a metody, které vám umožňují získat informace o objektu, manipulovat s hodnotami a strukturou objektu a procházet strukturou dokumentu XML.
Podívejme se na hlavní objekty XML DOM a ukažme si některé příklady jejich použití v Borland Delphi.
Použití XML DOM v Borland Delphi
Abyste mohli používat Microsoft XML DOM v aplikacích Delphi, musíte k projektu připojit příslušnou knihovnu typů. K tomu spustíme příkaz Projekt | Import knihovny typů a v dialogovém okně Import knihovny typů vyberte knihovnu Microsoft XML verze 2.0 (verze 2.0), která se obvykle nachází v souboru Windows \ System \ MSXML.DLL.
Po kliknutí na tlačítko Create Unit se vytvoří modul rozhraní MSXML_TLB, který nám umožní používat objekty XML DOM: DOMDocument, XMLDocument, XMLHTTPRequest a řadu dalších, implementovaných v knihovně MSXML.DLL. Odkaz na modul MSXML_TLB musí být v seznamu Použití.
XML DOM zařízení
Objektový model dokumentu představuje dokument XML ve stromové struktuře větví. XML DOM API umožňují aplikacím procházet strom dokumentů a manipulovat s jeho větvemi. Každá větev může mít specifický typ (DOMNodeType), podle kterého se určuje nadřazená a podřízená větev. Většina dokumentů XML obsahuje větve typu element, atribut a text. Atributy jsou speciálním druhem větvení a nejsou podřízenými větvemi. K manipulaci s atributy se používají speciální metody poskytované objekty XML DOM.
Kromě implementace rozhraní doporučených konsorciem World Wide Web Consortium (W3C), Microsoft XML DOM obsahuje metody, které podporují XSL, XSL vzory, jmenné prostory a datové typy. Například metoda SelectNodes umožňuje použít syntaxi vzoru XSL k nalezení větví v určitém kontextu a metoda TransformNode podporuje použití XSL k provádění transformací.
Test XML dokumentu
Jako příklad dokumentu XML si vezměme adresář hudebního CD-ROM, který má následující strukturu:
Nyní jsme připraveni začít zkoumat objektový model XML DOM, počínaje objektem XMLDOMDocument.
Dokument XML - Objekt XMLDOMDocument
Práce s dokumentem XML začíná jeho načtením. K tomu používáme metodu Load, která má pouze jeden parametr, který určuje URL načítaného dokumentu. Při načítání souborů z lokálního disku se zadává pouze celý název souboru (soubor: /// protokol lze v tomto případě vynechat). Pokud je dokument XML uložen jako řetězec, použijte k načtení dokumentu metodu LoadXML.
Vlastnost Async se používá k řízení způsobu načítání dokumentu (synchronního nebo asynchronního). Ve výchozím nastavení je tato vlastnost nastavena na hodnotu True, což znamená, že dokument je načten asynchronně a řízení je vráceno aplikaci před úplným načtením dokumentu. V opačném případě se dokument načte synchronně a pak musíte zkontrolovat hodnotu vlastnosti ReadyState, abyste zjistili, zda se dokument načetl nebo ne. Můžete také vytvořit obslužnou rutinu pro událost OnReadyStateChange, která převezme řízení, když se změní hodnota vlastnosti ReadyState.
Následující text ukazuje, jak načíst dokument XML pomocí metody Load:
Používá ... MSXML_TLB ... procedure TForm1.Button1Click (Sender: TObject); var XMLDoc: IXMLDOMDocument; begin XMLDoc: = CoDOMDocument.Create; XMLDoc.Async: = False; XMLDoc.Load (‘C: \ DATA \ DATA.xml‘); // // Zde se nachází kód, který // manipuluje s dokumentem XML a jeho větvemi // XMLDoc: = Nil; konec;
Po načtení dokumentu máme přístup k jeho vlastnostem. Vlastnost NodeName tedy bude obsahovat hodnotu #document, vlastnost NodeTypeString bude obsahovat hodnotu dokumentu a vlastnost URL bude obsahovat soubor: /// C: /DATA/DATA.xml value.
Vypořádání se s chybou
Zvláště zajímavé jsou vlastnosti související se zpracováním dokumentů při načítání. Například vlastnost ParseError vrací objekt XMLDOMParseError obsahující informace o chybě, ke které došlo při zpracování dokumentu.
Chcete-li napsat obslužnou rutinu chyb, můžete přidat následující kód:
Var XMLError: IXMLDOMParseError; ... XMLDoc.Load (‘C: \ DATA \ DATA.xml‘); XMLError: = XMLDoc.ParseError; Pokud XMLError.ErrorCode<>0 Potom // // Zde zpracujeme chybu // Else Memo1.Lines.Add (XMLDoc.XML); ... XMLDoc: = Nil;
Chcete-li zjistit, jaké informace jsou vráceny v případě chyby, změňte následující položku adresáře:
odstranění uzavíracího prvku
Nyní napíšeme kód, který vrátí hodnoty vlastností objektu XMLDOMParseError:
XMLError: = XMLDoc.ParseError; Pokud XMLError.ErrorCode<>0 Potom s XMLError Memo1.Lines začnou Add (‚Soubor:‘ + URL); Přidat (‚Kód:‘ + IntToStr (Kód chyby)); Přidat (‚Chyba:‘ + Důvod); Přidat (‚Text:‘ + SrcText); Přidat (‚Řádek:‘ + IntToStr (Řádek)); Přidat (‚Position:‘ + IntToStr (LinePos)); end Else Memo1.Lines.Add (XMLDoc.XML); Konec;
a spusťte naši aplikaci. V důsledku toho získáme následující informace o chybě.
Jak můžete vidět z výše uvedeného příkladu, informace vrácené objektem XMLDOMParseError jsou dostatečné k lokalizaci chyby a pochopení příčiny jejího výskytu.
Nyní obnovíme uzavírací prvek
Přístup ke stromu dokumentů
Chcete-li získat přístup ke stromu dokumentů, můžete buď získat kořenový prvek a poté iterovat jeho podřízené větve, nebo najít konkrétní větev. V prvním případě získáváme kořenový element prostřednictvím vlastnosti DocumentElement, která vrací objekt typu XMLDOMNode. Zde je návod, jak použít vlastnost DocumentElement k získání obsahu každého podřízeného prvku:
Var Node: IXMLDOMNode; Kořen: IXMLDOMElement; I: celé číslo; ... Kořen: = XMLDoc.DocumentElement; Pro I: = 0 až Root.ChildNodes.Length-1 do Begin Node: = Root.ChildNodes.Item [I]; Memo1.Lines.Add (Node.Text); Konec;
Pro náš dokument XML získáme následující text.
Pokud nás zajímá konkrétní větev nebo větev pod první podřízenou větví, můžeme použít buď metodu NodeFromID nebo metodu GetElementByTagName objektu XMLDOMDocument.
Metoda NodeFromID vyžaduje jedinečný identifikátor definovaný v XML Schema nebo Document Type Definition (DTD) a vrací větev s tímto identifikátorem.
Metoda GetElementByTagName vyžaduje řetězec s konkrétním prvkem (tag) a vrací všechny větve s tímto prvkem. Zde je návod, jak použít tuto metodu k nalezení všech umělců v našem adresáři CD-ROM:
Uzly: IXMLDOMNodeList; Uzel: IXMLDOMNode; ... Nodes: = XMLDoc.GetElementsByTagName (‚ARTIST‘); Pro I: = 0 až Nodes.Length-1 do Begin Node: = Nodes.Item [I]; Memo1.Lines.Add (Node.Text); Konec;
Pro náš dokument XML získáme následující text
Všimněte si, že metoda SelectNodes objektu XMLDOMNode poskytuje flexibilnější způsob přístupu k větvím dokumentu. Ale o tom více níže.
Větev dokumentu - Objekt XMLDOMNode
Objekt XMLDOMNode představuje větev dokumentu. S tímto objektem jsme se již setkali, když jsme získali kořenový prvek dokumentu:
Kořen: = XMLDoc.DocumentElement;
Chcete-li získat informace o větvi dokumentu XML, můžete použít vlastnosti objektu XMLDOMNode (tabulka 1).
Pro přístup k datům uloženým ve větvi se běžně používá buď vlastnost NodeValue (dostupná pro atributy, textové větve, komentáře, instrukce pro zpracování a sekce CDATA), nebo vlastnost Text, která vrací textový obsah větve, nebo vlastnost NodeTypedValue. Ten však lze použít pouze pro pobočky s napsanými položkami.
Procházení stromu dokumentů
Objekt XMLDOMNode poskytuje mnoho způsobů, jak procházet strom dokumentu. Například pro přístup k nadřazené větvi použijte vlastnost ParentNode (typ XMLDOMNode), přistupujte k podřízeným větvím prostřednictvím vlastností ChildNodes (typ XMLDOMNodeList), FirstChild a LastChild (typ XMLDOMNode) atd. Vlastnost OwnerDocument vrací objekt XMLDOMDocument, který identifikuje samotný dokument XML. Výše uvedené vlastnosti usnadňují navigaci ve stromu dokumentu.
Nyní projdeme všechny větve dokumentu XML:
Kořen: = XMLDoc.DocumentElement; Pro I: = 0 až Root.ChildNodes.Length-1 do Begin Node: = Root.ChildNodes.Item [I]; If Node.HasChildNodes Then GetChilds (Uzel, 0); Konec;
Jak bylo uvedeno výše, SelectNodes objektu XMLDOMNode poskytuje flexibilnější způsob přístupu k větvím dokumentu. Navíc existuje metoda SelectSingleNode, která vrací pouze první větev dokumentu. Obě tyto metody umožňují definovat šablony XSL pro vyhledávání větví.
Podívejme se na proces použití metody SelectNodes k načtení všech větví, které mají větev CD a dílčí větev PRICE:
Kořen: = XMLDoc.DocumentElement; Nodes: = Root.SelectNodes (‚CD / CENA‘);
Všechny dílčí větve PRICE větve CD budou umístěny do kolekce Nodes. K diskusi o šablonách XSL se vrátíme o něco později.
Manipulace s dětskými ratolestmi
Pro manipulaci s podřízenými větvemi můžeme použít metody objektu XMLDOMNode (tabulka 2).
Chcete-li zcela odstranit záznam o prvním disku, musíte spustit následující kód:
Var XMLDoc: IXMLDOMDocument; Kořen: IXMLDOMNode; Uzel: IXMLDOMNode; XMLDoc: = CoDOMDocument.Create; XMLDoc.Async: = False; XMLDoc.Load (‘C: \ DATA \ DATA.xml‘); // Získání kořenového prvku Root: = XMLDoc.DocumentElement; Uzel: = Kořen; // Odebere první podřízenou větev Node.RemoveChild (Node.FirstChild);
Všimněte si, že v tomto příkladu odstraňujeme první podřízenou větev. Jak odstranit první prvek první podřízené větve je znázorněno níže:
Var XMLDoc: IXMLDOMDocument; Kořen: IXMLDOMNode; Uzel: IXMLDOMNode; XMLDoc: = CoDOMDocument.Create; XMLDoc.Async: = False; XMLDoc.Load (‘C: \ DATA \ DATA.xml‘); // Získání kořenového prvku Root: = XMLDoc.DocumentElement; // a první podřízená větev Uzel: = Root.FirstChild; // Odebere první podřízenou větev Node.RemoveChild (Node.FirstChild);
Ve výše uvedeném příkladu jsme neodstranili první větev
Nyní přidáme novou větev. Níže je uveden kód, který ukazuje, jak přidat nový záznam hudebního disku CD-ROM:
Var NewNode: IXMLDOMNode; Podřízený: IXMLDOMNode; ... // Vytvořit novou větev -
Výše uvedený kód ukazuje následující sekvenci kroků pro přidání nové větve:
- Vytvoření nové větve pomocí metody CreateNode:
- vytvoření prvku pomocí metody CreateNode;
- přidání prvku do větve pomocí metody AppendChild;
- nastavení hodnoty prvku pomocí vlastnosti Text;
- … Opakujte pro všechny prvky.
- Přidání nové větve do dokumentu pomocí metody AppendChild.
Připomeňme, že metoda AppendChild přidá větev na konec stromu. Chcete-li přidat větev na konkrétní místo ve stromu, musíte použít metodu InsertBefore.
Sada větví - objekt XMLDOMNodeList
Objekt XMLNodeList obsahuje seznam větví, které lze sestavit pomocí metod SelectNodes nebo GetElementsByTagName a také získat z vlastnosti ChildNodes.
Použití tohoto objektu jsme již probrali v příkladu uvedeném v části „Navigace ve stromu dokumentů“. Zde uvedeme několik teoretických komentářů.
Počet větví v seznamu lze získat jako hodnotu vlastnosti Délka. Větve jsou indexovány od 0 do Délka-1 a každá jednotlivá větev je přístupná prostřednictvím odpovídající indexované položky v poli Item.
Procházení seznamu větví lze také provést pomocí metody NextNode, která vrátí další větev v seznamu nebo Nil, pokud je aktuální větev poslední. Chcete-li se vrátit na začátek seznamu, zavolejte metodu Reset.
Vytvářejte a ukládejte dokumenty
Probrali jsme tedy, jak můžete přidat větve a prvky do existujících dokumentů XML. Nyní vytvoříme dokument XML za běhu. V první řadě si pamatujte, že dokument lze načíst nejen z adresy URL, ale také z běžného řetězce. Zde je návod, jak vytvořit kořenový prvek, který pak lze použít k dynamickému sestavení zbytku prvků (které jsme již probrali v sekci Manipulace podřízených větví):
Var XMLDoc: IXMLDOMDocument; Kořen: IXMLDOMNode; Uzel: IXMLDOMNode; S: WideString; ... S: = '
Po vytvoření dokumentu XML jej uložte do souboru pomocí metody Save. Například:
XMLDoc.Save ('C: \ DATA \ NEWCD.XML');
Kromě uložení do souboru vám metoda Save umožňuje uložit dokument XML do nového objektu XMLDOMDocument. V tomto případě je dokument plně zpracován a v důsledku toho je zkontrolována jeho struktura a syntaxe. Zde je návod, jak uložit dokument do jiného objektu:
Procedure TForm1.Button2Click (Sender: TObject); var XMLDoc2: IXMLDOMDocument; begin XMLDoc2: = CoDOMDocument.Create; XMLDoc.Save (XMLDoc2); Memo2.Lines.Add (XMLDoc2.XML); ... XMLDoc2: = Nil; konec;
Závěrem, metoda Save také umožňuje uložit dokument XML do jiných objektů COM, které podporují rozhraní IStream, IPersistStream nebo IPersistStreamInit.
Použití šablon XSL
Když jsme probírali metodu SelectNodes objektu XMLDOMNode, zmínili jsme se, že poskytuje flexibilnější způsob přístupu k větvím dokumentu. Flexibilita spočívá v tom, že jako kritéria pro výběr větví můžete zadat šablonu XSL. Tyto šablony poskytují výkonný mechanismus pro vyhledávání informací v dokumentech XML. Chcete-li například získat seznam všech titulů hudebních CD-ROM v našem adresáři, můžete spustit následující dotaz:
Chcete-li zjistit, které disky umělců jsou vydány v USA, je požadavek vytvořen následovně:
Nodes: = Root.SelectNodes (‚CD / ARTIST‘);
Zde je návod, jak najít první jednotku v adresáři:
Nodes: = Root.SelectNodes (‚CD / TITLE‘);
A poslední:
Nodes: = Root.SelectNodes (‚CD / TITLE‘);
Chcete-li najít disky Boba Dylana, můžete spustit následující dotaz:
Nodes: = Root.SelectNodes (‘CD [$ any $ ARTIST =” Bob Dylan ”] / TITLE’);
a abychom získali seznam disků vyrobených po roce 1985, spustíme následující dotaz:
Nodes: = Root.SelectNodes (‚CD / TITLE‘);
Podrobnější popis syntaxe XSL vyžaduje samostatnou publikaci. Abych čtenáře zaujal a povzbudil k dalšímu výzkumu, uvedu jen jeden malý příklad možného použití XSL. Řekněme, že potřebujeme převést náš katalog na běžnou HTML tabulku. Pomocí tradičních metod musíme iterovat přes všechny větve stromu a pro každý přijatý prvek vytvořit odpovídající tagy
Pomocí XSL jednoduše vytvoříme šablonu (nebo šablonu stylů), která specifikuje, co a jak transformovat. Poté tuto šablonu překryjeme v našem katalogu – a máte hotovo: máme text šablony XSL, která převede katalog na tabulku (Výpis 2).
Kód pro překrytí šablony XSL v našem adresáři vypadá takto:
Procedure TForm1.Button2Click (Sender: TObject); var XSLDoc: IXMLDOMDocument; begin XSLDoc: = CoDOMDocument.Create; XSLDoc.Load (‘C: \ DATA \ DATA.xsl‘); Memo2.Text: = XMLDoc.TransformNode (XSLDoc); XSLDoc: = nula; konec;
Na závěr naší diskuse o XSL je třeba říci, že v současné době se tento jazyk aktivně používá pro transformaci mezi různými dokumenty XML a také pro formátování dokumentů.
Závěr
Z pochopitelných důvodů není možné pokrýt všechny objekty Microsoft XML DOM a uvést příklady jejich použití v jednom článku. Zde jsme se právě dotkli základních otázek používání XML DOM v aplikacích. Stůl 3 ukazuje všechny objekty implementované v Microsoft XML DOM.
ComputerPress 12 "2000
Pro mnoho programátorů Delphi je ukládání nastavení spojeno s používáním INI soubory ve svých programech. Použití této metody ve více či méně závažných projektech je třeba se vyhnout, protože omezuje flexibilitu, což brání dalšímu rozšiřování programu. Je třeba říci, že tento přístup je poměrně populární díky snadnému použití a přítomnosti vestavěných nástrojů ve vývojovém prostředí.
Nicméně strukturované XML soubory. Jejich výhodou je, že počet parametrů nemusí být pevně daný. Abyste tomu lépe porozuměli, zvažte konkrétní příklad.
V programu USearch se po kliknutí na záznam zobrazí kontextové menu, ve kterém je zobrazen seznam položek. Tyto položky jsou příkazy, které se načítají ze souboru nastavení. V případě, že byla nastavení uložena v INI soubor, pak by program mohl uložit a načíst určitý počet příkazů, například 10 nebo 50. Jakmile bude vyžadována větší hodnota, budete muset přepsat kód a znovu jej odpovídajícím způsobem zkompilovat.
Použití přístupu pomocí XML soubory, budeme moci dynamicky načítat všechny parametry sekce. Konfigurační soubor se navíc stane elegantnějším, bez nadbytečného číslování parametrů. Nicméně standardní nástroje pro práci s XML Delphi má mnoho nevýhod, proto doporučuji používat standardní knihovnu MSXML... Obvykle je standardně součástí operačních systémů rodiny Windows.
Chcete-li se připojit MSXML, potřebujeme vygenerovat soubor rozhraní se seznamem všech funkcí jeho importem ze serveru COM. O tom, jak importovat rozhraní, bylo napsáno mnoho podrobných článků, ale doporučuji vám stáhnout soubor MSXML2_TLB.PAS připraven k použití. Po stažení soubor umístěte vedle svého projektu nebo jej přesuňte do složky lib prostředí Delphi. Modul tedy budou moci používat všechny vytvořené programy MSXML, stačí přidat řádek MSXML2_TLB k použití.
Pro srozumitelnost zvažte následující příklad použití této knihovny:
Postup LoadData; var XMLDoc: DOMDocument; Kořen: IXMLDOMElement; begin XMLDoc: = CoDOMDocument.Create; XMLDoc.Load ("settins.xml"); Kořen: = XMLDoc.DocumentElement; ShowMessage (Root.SelectSingleNode ("velikost / šířka"). Text); Kořen: = nula; XMLDoc: = nula; konec;
Nejprve se vytvoří instance třídy DOMDocument a poté se do paměti načte obsah souboru settings.xml. Jelikož dle normy jakákoliv XML soubor musí obsahovat kořenovou značku (v tomto případě config), pak jej musíme získat pomocí funkce DocumentElement... Poté se obsah zobrazí mezi značkami.
Zde je aplikována metoda SelectSingleNode, která jako parametr bere řetězec
OBJEDNÁVKA ŘEŠENÍ PROBLÉMU NA DELPHI
Delphi je druhým nejdůležitějším programovacím jazykem, se kterým se studenti v procesu učení nejčastěji seznamují. To je začátek učení o objektově orientovaném programování. Jako student jsem došel k závěru, že neexistuje jednodušší metoda, jak se jazyk naučit, než si v něm napsat kalkulačku. I když implementujete primitivní funkci pro sčítání dvou čísel, hodně to osvětlí.
CodeGaear, Delphi 7, Lazarus jsou různé kompilátory, programy, které přenesou vámi napsaný kód do stroje a převedou ho na jedničky a jedničky. Toto jsou všechny programy pro tvorbu programů, nikoli samostatné programovací jazyky. Tyto kompilátory používají programovací jazyk Object Pascal, který je základem jazyka Delphi, který je syntaxí podobný běžnému Pascalu, ale funkčně se výrazně liší.
Jaká je syntaxe programovacího jazyka?
Toto je formát pro psaní různých operátorů. Například smyčka Pascal "for" má následující formát: "for n: = 1 až k do" a tak dále.
V programovacím jazyce C++ se stejná smyčka píše trochu jinak: for (n = 1; n Píšeme kalkulačku
To vám umožní pochopit, jak objekty interagují s programovým kódem, co jsou to "proměnné" a jak fungují matematické funkce. Jakékoli programování bude stejně výpočtem. Hra je také program, který neustále něco počítá, pracuje s čísly a číselnými funkcemi. Programování je neoddělitelné od matematiky.
Pro psaní použijme vývojové prostředí Lazarus. Jeho funkčnost není tak bohatá jako třeba CodeGear, ale je volně dostupná a je určena pro školení.
Po otevření vývojového prostředí vidíme formulář a sadu nástrojů. Zde je formulář.
Zde je sada nástrojů.
První věc, kterou uděláme, je přidat tři prvky, které potřebujeme k implementaci funkce pro sčítání dvou čísel. Potřebujeme: "Tedit" v počtu tří kusů a "TButton". Na obrázku níže jsou zobrazeny na panelu pomocí šipek. Klikneme na ně jednou a pak jednou na formulář a oni se v něm objeví.
Jedná se o textová pole pro vstup a běžné tlačítko. Na tyto prvky narazíte pomocí téměř jakéhokoli programu Windows. Podívej se.
Nyní tyto štítky vyčistíme. Klikněte na kartu "Zobrazit". A klikněte na položku „Inspektor objektů. Objeví se okno jako toto.
Jednou klikneme na náš prvek "Button" ve formuláři a změníme hodnotu "Caption" v okně inspektoru na jakoukoli jinou. Například slovo "OK". Stiskneme Enter. Na formuláři vidíme, jak prvek změnil svůj název.
To samé uděláme s Edit's, jen je nebudeme přejmenovávat, ale uděláme je bez obsahu. Postupně je vyberte a vymažte hodnotu Text v inspektoru. Nezapomeňte stisknout Enter.
Ve výsledku naše forma vypadá takto.
Nyní, aby naše kalkulačka fungovala, musíte napsat potřebný programový kód pro postup našeho tlačítka. Klikněte dvakrát na prvek Button a otevřete zdrojový editor.
Vidět? Postup Button1Click. Toto je postup, který je zodpovědný za to, co se stane, když jednou klikneme na tlačítko. A mělo by se stát následující: program potřebuje zobrazit součet čísel zadaných do prvních dvou polí ve třetí Editaci. Napíšeme kód.
Potřebujeme napsat takových jednoduchých 5 řádků kódu. Komentáře a vysvětlení můžete vidět na obrázku výše. Poté stiskneme toto tlačítko.
Náš projekt bude sestaven. Bude zkompilován do programu. Do prvních dvou polí zadáme čísla, klikneme na tlačítko a získáme hodnotu součtu.
Závěr
Můžete kliknout na tlačítko "Soubor", poté na "Uložit vše", vybrat složku k uložení a budete mít plnohodnotný program, který lze spustit z plochy. Nyní zkuste sami přijít na to, co musíte v tomto kódu přepsat, aby program dělil dvě čísla a nesčítal. Tip: musíte změnit typ dat. Video níže ukazuje podobný příklad, ale v prostředí Delphi 7, nikoli Lazarus.
V poslední době je velká pozornost věnována budování e-business systémů, nebo jak se jim také říká - B2B (business to business). S ohledem na doporučení k výstavbě výměnných streamovacích systémů koordinačního orgánu internetových technologií - WWW Consortium: důraz je kladen na XML technologie a konstrukci systémů pro výměnu XML dokumentů.
Výhodou použití XML v e-businessu je vysoká efektivita B2B systémů při nízkých nákladech na jeho tvorbu díky přehledné a vizuální prezentaci strukturovaných informací, možnost využívat moderní síťové protokoly a vytvářet obchodní systémy v reálném čase.
Nezávislost prezentace informací ve formě XML dokumentů umožňuje různým společnostem zapojeným do e-businessu vyrábět software nezávisle na sobě.
Ve všech systémech je burza zpravidla postavena podle stejného schématu pomocí požadavků HTTP. SSL se používá jako protokol zabezpečení informací (ale to je samostatné téma).
Jednou z možných možností zpracování zpráv XML je sestavení aplikací BIN / CGI (ISAPI) nebo komponent COM (server), které generují nebo zpracovávají dokumenty XML.
Na jedné straně se aplikace chová jako klient, který zadává HTTP požadavek v režimu POST, na druhé straně je WEB server, na jehož straně je požadavek zpracován a je vypsána odpověď. Výměna informací využívá XML dokumenty.
Jednou z nejúčinnějších možností implementace je použití existujícího analyzátoru XML, který podporuje model DOM. Takový parser je distribuční balíček Win'98 nebo integrální součást IE 4.7 a vyšší (pro Win'95) a představuje COM server umístěný v knihovně msxml.dll.
Component Object Model (COM) – Představuje zapouzdřená data a metody do jediné entity a způsob, jak k nim přistupovat prostřednictvím systému rozhraní. Pomocí nástrojů Delphi je poměrně snadný přístup k třídám objektu COM (na jednom COM serveru může být zahrnuto několik tříd). K objektům se přistupuje inicializací instance třídy prostřednictvím systému rozhraní. Popis rozhraní je prováděn jazykem definice rozhraní (IDL), který lze pomocí prostředí provádět automaticky.
Nástroje Delphi se používají k importu z COM serveru msxml.dll, jsou sestaveny soubory pro popis rozhraní IDL a soubor pro binární popis typů knihoven - TLB. Tato operace se provádí prostřednictvím systémové nabídky: Projekt | Import knihovny typů:(obrázek 1). Dále se objeví dialogové okno (obrázek 2), ve kterém je potřeba vybrat COM objekt (v našem případě je objekt registrován pod názvem "Microsoft.XMLDom (verze 2.0)") a vytvořit TLB soubor (tlačítko Vytvořte jednotku). Pomocí souboru TLB framework vygeneruje soubor popisu serveru COM "Pascal" - MSXML_TLB.pas
Soubor MSXML_TLB.pas popisuje všechna rozhraní, konstanty a coclasses serveru COM.
Pro přístup k objektům prvku COM potřebujete v direktivě POUŽITÍ přidejte název souboru s popisem knihovny (MSXML_TLB.pas). Níže je uveden jednoduchý program využívající standardní analyzátor DOM msxml.dll, který načte dokument XML a zobrazí jej v prvku textového pole Memo1.
používá Windows, Zprávy, SysUtils, Třídy, Grafika, Ovládací prvky, Formuláře, Dialogy, OleServer, MSXML_TLB, StdCtrls; typ TForm1 = třída(TForm) Tlačítko1: TButton; Memo1: TMemo; postup Button1Click (Sender: TObject); konec; var Form1: TForm1; implementace($ R * .DFM) Postup TForm1.Button1Click (Sender: Tobject); // deklarace soclass objektu DOMDocument; var coDoc: CoDOMDocument; // třída konzistentní s rozhraním IDOMDocument; var Dokument: IXMLDOMDocument; začít // vytvoření instance objektu DOMDocument; Doc: = coDoc.Create; // volání metody Load instance objektu DOMDocument; Doc.load ("data.xml"); // přístup k vlastnosti xml instance DOMDocument; Memo1.Text: = Doc.xml; konec; konec.Koncept DOM – objektový model dokumentu
Každý XML dokument je reprezentován jako soubor více objektů (tříd), s jejichž pomocí je možné přistupovat k jednotlivým prvkům (objektovým polím). DOM - rozhraní popisuje přístup jak k jednoduchým objektům typu DOMString nebo CharacterData, tak k částem či jednotlivým prvkům XML dokumentu: DOMFragmentElement, DOMNode, DOMElement.
Následují nejdůležitější vlastnosti a metody objektů XMLDOMDocument, XMLDOMNode, XMLDOMNodeList. Je třeba poznamenat, že níže uvedené metody a funkce objektů DOM (Document Object Model) používá analyzátor Microsoft XML msxml.dll a jsou poněkud širší než model DOM schválený konsorciem W3C.
Úplnější popis rozhraní objektu DOM lze nalézt na
Objekt XMLDOMDocument | |
Představuje nejvyšší úroveň hierarchie objektů a obsahuje metody pro práci s dokumentem: jeho načítání, analyzování, vytváření prvků, atributů, komentářů atd. ... | |
Vlastnosti | |
Async | Vlastnost identifikující aktuální režim zpracování |
ParseError | Vrátí odkaz na objekt zpracování chyb XMLDOMParseError |
Povolit – zakáže ověřování dokumentů. | |
url | Vrátí adresu URL dokumentu |
documentElement | Obsahuje odkaz na kořenový prvek dokumentu jako objekt XMLDOMElement. |
Metody | |
načíst (url) loadXML (xmlString) |
Načte dokument XML, |
uložit (objTarget) | Uloží dokument XML do souboru |
přerušit | Přerušení procesu načítání a zpracování dokumentu. |
createAtribute (jméno) | Vytvoří nový atribut se zadaným názvem pro aktuální prvek. |
createNode (typ, název, názevSpaceURI) | Vytvoří uzel zadaného typu a názvu |
createElement (tagName) | Vytvoří prvek dokumentu se zadaným názvem. |
createTextNode (data) | Vytvoří text v dokumentu |
getElementsByTagName (název tagu) | Vrátí odkaz na kolekci prvků dokumentu s daným názvem |
nodeFromID (idString) | Najděte prvek podle ID |
Objekt XMLDOMNode | |
Objekt XMLDOMNode, který implementuje základní rozhraní DOM Uzel, je určen pro manipulaci se samostatným uzlem stromu dokumentů. Jeho vlastnosti a metody umožňují získat a změnit kompletní informace o aktuálním uzlu – jeho typ, název, celé jméno, jeho obsah, seznam podřízených prvků atd. | |
Vlastnosti | |
nodeName, baseName | Vrátí název aktuálního uzlu. |
předpona | Vrátí předponu Namespace. |
datový typ | Určuje typ obsahu aktuálního uzlu |
nodeType, nodeTypeString | Vrátí typ aktuálního uzlu: |
atributy | Získá seznam atributů aktuálního uzlu jako kolekci XMLDOMNamedNodeMap. |
text | Vrátí obsah aktuálního podstromu jako text |
xml | Vrátí reprezentaci XML aktuálního podstromu. |
nodeValue | Vrátí obsah aktuálního uzlu. |
childNodes | Vrátí seznam podřízených prvků jako XMLDOMNodeList. |
firstChild, lastChild | Vrátí první / poslední dítě |
předchozíSourozenec, dalšíSourozenec | Vrátí předchozího / dalšího sourozence. |
parentNode | Obsahuje odkaz na nadřazený prvek. |
vlastníkDokument | Vrátí ukazatel na dokument obsahující aktuální uzel. |
Metody | |
appendChild (newChild) | Přidá nového potomka k aktuálnímu uzlu. |
insertBefore (newChild, refChild) | Vloží podřízený uzel a umístí jej do aktuálního podstromu vlevo od uzlu určeného refChild. |
cloneNode (hluboký) | Vytvoří kopii aktuální položky. |
getAttribute(název) getAttributeNode(název) setAttribute (název, hodnota) setAttributeNode (XMLDOMAttribute) |
Přístup k atributům (vytvoření, čtení, zápis) objektu. Name je název atributu, value je jeho hodnota. Vrátí hodnotu objektu XMLDOMAttribute. |
nahraditChild (newChild, oldChild) removeChild (oldChild) | Nahrazení objektu oldChild v aktuálním seznamu podřízených objektů objektem newChild. Odstranění objektu oldChild |
selectNodes (patternString) selectSingleNode (patternString) | Vrátí objekt XMLDOMNodeList vybraný podle vzoru vyhledávání nebo prvního uzlu |
transformNode (šablona stylů) transformNodeToObject (stylesheet, outputObject) |
Přiřadí šablonu stylů podstromu aktuálního uzlu a vrátí řetězec, který je výsledkem zpracování. Parametr je odkaz na objekt DOMDocument, který obsahuje příkazy XSL. |
Použití XML v podnikání.
Pro jasnější obrázek je potřeba vysvětlení a proč je to všechno potřeba, abychom pochopili, jak to funguje:
Při budování B2B nebo podnikového ERP systému, při organizování výměny informací XML dokumentů mezi podniky nebo pobočkami pr-I se využívá efektivně osvědčený systém přenosu informací založený na existujících WEB serverech přes HTTP protokoly.
Na jedné straně se aplikace chová jako klient, který zadává HTTP požadavek v režimu POST, na druhé straně je WEB server, na jehož straně je požadavek zpracován a je vypsána odpověď. XML dokumenty se používají jako výměna.
Například v jednoduchém podnikovém ERP systému, účetním programu (ACS Accounting), je potřeba vygenerovat požadavek na fakturu a poslat ji na pobočku, která má sklad (ACS Warehouse). AWP Podobné prohlášení o problému při vytváření B2B systému, kdy podnik A požaduje dostupnost produktů (vytváří objednávku na nákup) od dodavatele B.
Enterprise A a jeho program vystupují jako klient. Sklad obsluhuje dodavatel B, který má skladový komplex s databází na SQL serveru. Výměna se provádí prostřednictvím firemního WEB serveru dodavatele V.
Níže je uveden následující typický algoritmus výměny:
Obrázek 3
- Enterprise A iniciuje proces A(objednávka produktu), která funguje jako WEB klient.
- Proces A vygeneruje XML dokument (například požadavek na fakturu) a předá jej jako POST http požadavek na WEB server poskytovatele B. Identifikátor zdroje zpracovatelské aplikace se používá jako URI. Identifikátor URI může být stejný pro všechny typy dokumentů nebo individuální pro každý typ. Vše závisí na struktuře B2B (WEB) serveru.
- WEB server analyzuje požadavek a vygeneruje server Proces B předáním těla XML dokumentu jako parametru.
Proces B spouští WEB server a je zpracován buď jako ASP stránka, CGI (ISAPI) - aplikace nebo JAVA server (serverová aplikace) - Proces B- vygeneruje požadavek na SQL databázový server.
- SQL server provede potřebné operace v databázi, vygeneruje odpověď a vrátí ji Proces B.
- Podle odpovědi z SQL serveru Proces B vygeneruje XML dokument (odpověď) a vrátí jej jako odpověď na http požadavek klientské aplikaci.
- Dále, v závislosti na situaci na straně klienta, se buď vytvoří nový http požadavek, nebo se relace ukončí.
Několik slov o organizaci toku dokumentů.
Obecné pravidlo pro vývoj systému pro výměnu dokumentů XML je:
- Nejprve- vývoj vývojového diagramu elektronických dokumentů a jejich struktury;
- Za druhé- vývoj tabulek procesních funkcí (podprocesů), tzn. jakou funkci s ohledem na který dokument XML bude každý proces implementovat.
Každý dokument XML, stejně jako dokument HTML, se musí skládat z hlavičky zprávy (informace uzavřené značkami) a těla zprávy (u požadavku je tato informace orámována značkami, které odpovídají na požadavek). Aby byl dokument XML dobře formován, je nutné jeho dvě součásti „Title“ a „Request“ orámovat například tagy. Typ typického dokumentu je uveden níže:
Záhlaví (obrázek 4), na rozdíl od HTML dokumentu, musí obsahovat různé druhy servisních informací, včetně informací o typu přenášeného dokumentu a procesu jeho zpracování. Tělo dokumentu vstupuje do zpracování informací, tzn. obsah orámovaný značkami. Je třeba poznamenat, že struktura nadpisů by měla být stejná pro všechny typy dokumentů.
Pro Proces spuštěný serverem je vhodnější (ale není to nutné) sestavit algoritmus zpracování následovně:
![](https://i1.wp.com/codenet.ru/np-includes/upload/2005/01/05/128666.jpg)
Obrázek 6.
Některé základní body při vytváření klientské strany
Jak již bylo vysvětleno, při vytváření XML dokumentu se využívá jeho reprezentace ve formě modelu DOM. Níže je uveden příklad textové části Delphi programu pro generování záhlaví xml zpráv.
postup TThread1.HeaderCreate (Sender: Tobject); var // deklarace třídy, potřebná k vytvoření coDoc: CoDomDocument; // Objekt XMLDomDocument Doc: DomDocument; r: IXMLDOMEprvek; Uzel: IXMLDOMElement; // DOMText txt: IXMLDOMText; // DOMAttribute attr: IXMLDOMAttribute; začít // vytvoření dokumentu DOM Doc: = coDoc.Create; Doc.Set_async (false); // počáteční spuštění dokumentu DOM Doc.LoadXML ("Je třeba poznamenat, že deklarace proměnné coDoc: CoDomDocument a Doc: DomDocument, stejně jako její vytvoření metodou Create (Doc: = coDoc.Create;), se provádí jednou. Deklarace proměnné je v sekci popisující globální proměnné, nikoli v lokální proceduře, jak bylo pro názornost demonstrováno na tomto příkladu (tedy jedna globální proměnná typu DomDocument na jeden programový modul).
Výsledkem práce výše uvedeného programu bude vytvořená hlavička, aplikovaná na náš příklad xml-document: zobrazený na obrázku 5.
![](https://i0.wp.com/codenet.ru/np-includes/upload/2005/01/05/128662.gif)
Obrázek 5
Obrázek 6.
Hlavní výhodou přenosu informací ve formě XML dokumentů je, že je možné vytvořit zprávu pomocí nezávislých tabulkových struktur v DBMS jak na přijímací, tak na vysílací straně. S použitím našeho příkladu předpokládejme, že je nutné přenést informace o fakturách podniku A z DBMS se strukturou znázorněnou na obrázku 6
Pro vygenerování xml dokumentu obsahujícího fakturu je nejprve vytvořen SQL dotaz (dotaz A) s informacemi o samotné faktuře:
VYBRAT* FROM Invoice_General KDE InvoiceNum =: num VYBRAT Zboží, kvalita, cena, HZ_cod Z Zboží KDE InvoiceNum =: num //: num je parametr, který určuje číslo faktury.Níže je část programu, která generuje tělo xml dokumentu:
postup TThread1.DataBodyCreate (Sender: Tobject); var // deklarace třídy a objektu XMLDomDocument// coDoc: CoDomDocument; // musí být globální pro celý modul.// Dokument: DomDocument; // deklarovat objekty DOMElement r: IXMLDOMEprvek; // DOMEprvek; Uzel, Uzel2: IXMLDOMElement; Uzel3, Uzel4: IXMLDOMElement; // DOMText txt: IXMLDOMText; str: řetězec; // Číslo faktury: celé číslo;- globální proměnná - // má hodnotu 987654 // dotazA, dotazB: Tětiva;- globální proměnná, // má hodnotu odpovídající požadavku // dotazA - požadavek A s obecnými informacemi o faktuře // dotazB - požadavek B informace o zboží popsaném // faktuře (viz text) začít Query.Close; // viz text "požadavek A" Dotaz.Text: = dotazA; // vykoná požadavek Query.ExecSQL; Query.Open; // získat adresu kořenového prvku r: = Doc.Get_documentElement; Uzel2: = Doc.createElement ("Požadavek"); // vytvořit DOMElement (tag) Uzel: = Doc.createElement ("Faktura"); // přidání prvku do kořenového adresáře r.appendChild (Uzel2); // přidat položku do Uzel2. appendChild (Uzel); // vytvořit DOMElement (tag) Uzel3: = Doc.createElement ("Depurture"); // přidat položku do Uzel. appendChild (Uzel3); // volání do pole "Depurture" požadavku str: = Query.FieldByName ("Depurture"). AsString; // vytvoření textového uzlu = hodnota pole// přiřadí hodnotu uzlu // textový uzel, proměnná str Node.appendChild (txt); // podobné operace pro značkuVýsledkem tohoto postupu je vygenerování následujícího textu XML dokumentu:
![]() |
K vytvoření požadavku se používá metoda Open objektu IXMLHttpRequest:
postup Otevřít (const bstrMethod, - typ metody = "POST" bstrUrl, - adresa URL serveru varAsync, - režim komunikace asynchronní / synchronní = true bstrUser, - uživatelské jméno pro autentizaci bstrPassword) - hesloVytvoření serverové strany zpracování dokumentů
Jak bylo uvedeno dříve, zpracování požadavku HTTP může být zpracováno aplikacemi CGI nebo Java servlety. Je možná i varianta zápisu ASP stránek. Ale v tomto případě je přenos dat možný pouze metodou "GET" přes řetězec dotazu. Zpracování požadavku HTTP pro stránky ASP je však efektivnější než aplikace CGI. Podle mě je však jedno, jak to zpracovat, ale důležitější je vyřešit otázku - jak sestavit program pro zpracování, a ne jakými prostředky.
Jestliže jsme v předchozí kapitole zkoumali možnosti tvorby XML dokumentu, pak je úkolem serverové aplikace opačný – parsování XML dokumentů. Níže je část programu, který analyzuje xml dokument:
postup Tthread1.DataParser (Sender: Tobject); var // deklarovat objekty DOMElement r, FNode: IXMLDOMElement; Str, Název souboru: String; parm: Struna; // deklarace soclass and CoDocXML, CoDocXSL, CoDocResult: CoDomDocument; // Objekt XMLDomDocument XMLDoc, XSLDoc, ResultDoc: DomDocument; // HttpStr: String; - globální proměnná obsahující řetězec požadavku HTTP Začít XMLDoc: = coDocXML.Create; XMLDoc.LoadXML (HttpStr); // získat adresu kořenového prvku r: = Doc.Get_documentElement; // získat hodnotu prvku FNode: = r.SelectSingleNode ("// TypeDocument"); // získat hodnotu atributu id = "Objednávka" FileName: = FNode.GetAttibute ("id"); // a vytvoření názvu souboru Order.xsl FileName: = FileName + ". Xsl"; // vytvoření dokumentu XSLDoc XSLDoc: = coDocXSL.Create; XSLDoc.LoadXML (název souboru); // vytvoření dokumentu XMLDoc ResultDoc: = coDocResult.Create; // nastavení režimu synchronního zpracování ResultDoc.Set_async (false); // nastavení kontroly analýzy ResultDoc.validateOnParse: = true; // analýza XMLDoc pomocí šablony XSL XMLDoc.transformNodeToObject (XSLDoc, ResultDoc); // proměnné Str je přiřazena textová hodnota // výsledného dokumentu. Str: = ResultDoc.text; // najít prvek FNode: = r.SelectSingleNode ("// InvoiceNumber"); // a získáme hodnotu prvku parm: = FNode.text; // zavře žádost o přístup Query.Close; Dotaz.Text: = Str; // přiřazení hodnoty parametru Query.Params.AsString: = parm; // vykoná požadavek Query.ExecSQL; konec;Celý vrchol analýzy spočívá v použití šablony XSL, která se generuje individuálně pro každý typ dokumentu. Výsledkem analýzy je řetězec dotazu SQL. Následně provedení vygenerovaného řetězce SQL dotazu provede potřebné změny v datech v DBMS.
Výhodou použití analýzy pomocí šablony je také to, že získáte určitou flexibilitu dat a získáte úplnou nezávislost algoritmu na kódu programu. Níže je uveden text šablony XSL použité ke zpracování dokumentu typu ORDER:
Při vysvětlení výše uvedeného příkladu je třeba poznamenat, že použití dvojice značek je formální povahy, protože po analýze musí výsledný dokument XML formálně obsahovat alespoň jeden uzel. Metoda ResultDoc.text přiřadí textovou hodnotu ResultDoc získaného během analýzy dokumentu XML. V tomto případě je hodnotou vše, co je orámováno dvojicí tagů a tzn. SQL dotaz, který jsme vygenerovali.
Další vlastností psaní programu je třeba poznamenat možnost použití parametru SQL : č. Použití parametru zjednoduší text šablony xsl. Definice hodnoty odpovídajících prvků uzlů dokumentu XML je určena zpočátku výběrem podle názvu odpovídajícího uzlu, například:
XSL na první pohled
XSL je zkratka odvozená od eXtensible Stylesheet Language, což je jazyk pro formátování šablon stylů (data XML). Jak můžete vidět v záhlaví, k formátování dat XML se používá jazyk XSL (eXtensible Stylesheet Language). Podle definice se W3C XSL skládá ze dvou částí:
- XSLT - Transformace XSL. Jazyk používaný k transformaci nebo formátování (transformaci) dokumentů XML. S pomocí XSLT tak můžeme získat různé řezy množiny dat a formy prezentace dat.
- Formátovací prvky. Tyto prvky zahrnují všechny typografické prvky dat poté, co byly zpracovány pomocí XSL. Používá se pouze pro generování HTML stránek.
Pomocí XSLT můžeme vybrat potřebná data z XML souboru a uspořádat je do podoby pro prezentaci uživateli. V našem případě jsme například transformovali XML data ve formě SQL dotazu. Klasickým využitím XSL je obvykle formátování dat ve formě HTML stránek nebo vzácněji ve formě RTF souborů.
XSL soubor popisuje šablonu, podle které bude provedena transformace XML dat. Vrátíme-li se k xsl šablonám, lze v XSLT rozlišit následující prvky (směrnice):
direktivy XSL | popis |
---|---|
xsl: použít šablony | Direktiva označující použití odpovídajících šablon pro atribut select = "název šablony" |
xsl: atribut | vytvoří strom atributů a přidá jej do výstupního prvku, název parametru = "název atributu", jmenný prostor je URI jmenného prostoru (prefix jmenného prostoru) |
xsl: šablona volání | volá šablonu, název atributu = "URI do šablony" |
xsl: vyberte si xsl: kdy xsl: jinak |
výběr podle podmínky xsl: when expr = "vyhodnocení výrazu ve skriptu", jazyk = "jméno-jazyka" test = "vyhodnocený výraz" |
xsl: komentář | vygeneruje komentář ve výstupním dokumentu |
xsl: kopírovat xsl: kopie |
zkopíruje aktuální uzel do výstupního zdroje nebo vloží fragment dokumentu do uzlu, kde atribut select = "název zdrojového uzlu" |
xsl: prvek | vytvoří výstupní prvek podle názvu, název atributu = "název prvku", jmenný prostor = "odkaz na jmenný prostor uri" |
xsl: pro každého | znovu použije šablonu na všechny uzly seznamu uzlů, atribut select určuje seznam uzlů |
xsl: pokud | kontrola stavu, nastavená atributem test jako výraz |
xsl: zahrnout | obsahuje externí šablonu, atribut href = "odkaz URI" |
xsl: výstup | určuje výstup, atribut metody může být "xml", "html" nebo "text" |
xsl: param | určuje hodnotu parametrů, název atributu = "název parametru", select = "hodnota" |
xsl: instrukce pro zpracování | vytvoří instrukci zpracování, název atributu = "název procesu instrukce" |
xsl: řazení | třídí sadu uzlů, atributy select = "název uzlu", datový typ = datový typ ("text" | "číslo" | Qname), pořadí = směr řazení ("vzestupně" | "sestupně") |
xsl: šablona stylů | definuje dokument xsl šablony, je kořenovým prvkem pro XSLT |
xsl: šablona | definuje xsl-šablonu, název atributu = "předpona URI k názvu šablony", match = "označení uzlu, na který je šablona aplikována" |
xsl: text | generuje text do výstupního proudu, atribut disable-output-escaping = "ano" nebo "ne", označuje schopnost generovat znaky ESC |
xsl: hodnota-of | vloží hodnotu vybraného uzlu jako text, atribut select = "ukazatel na uzel", ze kterého je hodnota převzata |
xsl: proměnná | určuje hodnotu mezí proměnných, název atributu = "název proměnné", select = "výpočet hodnoty proměnné" |
xsl: s-param | aplikuje parametr na šablonu, název atributu = "název parametru", select = výraz pro vyhodnocení aktuálního kontextu, výchozí hodnota "." |
Závěr
Nakonec je třeba poznamenat, že pomocí standardního analyzátoru XML msxml.dll není jediným nástrojem pro analýzu a tvorbu XML dokumentů. Například k vytvoření dokumentů XML efektivně používejte komponenty TPageProduser a TableProduser... Tento článek však pouze zdůrazňuje šíři a použitelnost modelu DOM v praxi.
Autor bude velmi vděčný za vaši zpětnou vazbu k relevanci tématu, obecnému obsahu, stylu prezentace, stejně jako všechny další komentáře, které pomohou dále zlepšit kvalitu psaní sborníku článků a vydání knihy zabývající se téma praktické stránky používání XML dokumentů v e-commerce. Podrobnější informace o praktické stránce používání elektronických dokumentů lze nalézt na stránkách autora www.eDocs.al.ru Plánuje se také umístění zdrojových textů a příkladů na stránky autora.