Tato kapitola vám ukáže, jak psát schémata XML. Dozvíte se také, že diagram lze psát různými způsoby.

Dokument XML

Podívejme se na tento dokument XML s názvem „shiporder.xml“:

xmlns: xsi \u003d "http://www.w3.org/2001/XMLSchema-instance"
xsi: noNamespaceSchemaLocation \u003d "shiporder.xsd"\u003e
John Smith

Ola Nordmann

Langgt 23

4000 Stavanger
Norsko


Empire burlesque
Speciální edice
1
10.90


Skryj své srdce
1
9.90

Výše uvedený dokument XML se skládá z kořenového prvku „shiporder“, který obsahuje požadovaný atribut s názvem „orderid“. Prvek „shiporder“ obsahuje tři různé podřízené prvky: „orderperson“, „shipto“ a „item“. Položka „položka“ se objeví dvakrát a obsahuje položku „název“, volitelnou položku „poznámka“, „množství“ a položku „cena“.

Řádek výše: Xmlns: XSI \u003d "http://www.w3.org/2001/XMLSchema-instance" říká analyzátoru XML, že tento dokument by měl být porovnán se schématem. Řádek: XSI: noNamespaceSchemaLocation \u003d "shiporder.xsd" označuje, kde je schéma umístěno, co (zde je ve stejné složce jako „shiporder.xml“) .

Vytvořte schéma XML

Nyní chceme vytvořit schéma pro dokument XML výše.

Začneme otevřením nového souboru, který budeme nazývat „shiporder.xsd“. Abychom vytvořili schéma, mohli bychom jednoduše sledovat strukturu v dokumentu XML a definovat každý prvek tak, jak ho najdeme. Začneme standardní deklarací XML následovanou prvkem xs: schema, který definuje schéma:



...

Ve výše uvedeném schématu používáme standardní obory názvů (xs) a identifikátor URI přidružený k tomuto oboru názvů je definice jazyka schématu, který má výchozí hodnotu http://www.w3.org/2001/XMLSchema.

Dále musíme definovat prvek „shiporder“. Tento prvek má atribut a obsahuje další prvky, takže s ním zacházíme jako s komplexním typem. Podřízené prvky prvku „shiporder“ jsou obklopeny prvkem xs: ze sekvence, která definuje uspořádanou sekvenci dílčích prvků:




...


Pak musíme prvek „orderperson“ definovat jako jednoduchý typ (protože neobsahuje žádné atributy ani jiné prvky). Typ (xs: string) má předponu předponu oboru názvů přidruženou k schématu XML, což označuje předdefinovaný datový typ schématu:










Ve schématech můžeme určit počet možných výskytů prvku s atributy MaxOccurs a MinOccurs. MaxOccurs definuje maximální počet výskytů pro prvek a MinOccurs definuje minimální počet výskytů pro prvek. Výchozí hodnota pro MaxOccurs i MinOccurs je 1!

Nyní můžeme definovat prvek „item“. Tento prvek se může v rámci prvku „shiporder“ objevit několikrát. To je určeno nastavením atributu maxOccurs na prvek „item“ prvku „unbounded“, což znamená, že může existovat tolik výskytů prvku „item“, kolik chce autor. Upozorňujeme, že prvek „note“ je volitelný. Zjistili jsme to nastavením atributu minOccurs na nulu:










Nyní můžeme deklarovat atribut „shiporder“ prvku. Protože se jedná o povinný atribut, použijeme \u003d "required".

Poznámka: Prohlášení o atributech musí být vždy poslední:

Zde je kompletní výpis souboru schématu s názvem „shiporder.xsd“:





























Rozdělte schémata

Předchozí metoda návrhu je velmi jednoduchá, ale může být obtížné ji číst a udržovat, když jsou dokumenty složité.

Následující metoda návrhu je založena na definování všech prvků a atributů a jejich odkazování pomocí atributu ref.

Zde je nový design souboru schématu ("shiporder.xsd"):








































Používání pojmenovaných typů

Třetí způsob návrhu definuje třídy nebo typy, což umožňuje opětovné použití definic prvků. To se provádí pojmenováním elementů simpleTypes a complexTypes a následným odkazem na ně prostřednictvím atributu type prvku.

Tady je třetí návrh souboru schématu ("shiporder.xsd"):

































Element omezení označuje, že datový typ byl odvozen z oboru názvů datového typu schématu W3C XML. Následující úryvek tedy znamená, že hodnota prvku nebo atributu musí být řetězcová hodnota:

Element omezení se běžněji používá k použití omezení na prvky. Podívejte se na následující řádky z výše uvedeného diagramu:





To znamená, že hodnota prvku nebo atributu musí být řetězec, musí mít přesně šest znaků na řetězec a tyto znaky musí být číslo mezi 0 a 9.

XDTO je mechanismus 1C, který je potřebný při vytváření a používání webových služeb v 1C.

Balíčky XDTO 1C vám umožňují popsat strukturu požadovaného souboru XML pro převod dat do az XML.

Koho to zajímá - analyzujme otázku podrobněji.

Soubory XML jsou přenášeny přes internet a jsou čteny mnoha programy.

Vnímáno - to znamená, že je v jejich kódu napevno - pokud narazíte na název konkrétního prvku v souboru XML - vezměte to takhle a udělejte to.

Pokud tedy použijeme název prvku Apple, pak existuje velká šance, že si nějaký jiný program může „myslet“, že je to Apple, který zná, ale mysleli jsme něco vlastního.

Abychom tomu zabránili a abychom výslovně naznačili, že se náš Apple liší od všech ostatních, lze v souboru zadat název oboru názvů - předponu, která se použije před názvem prvků.

Obor názvů (v anglickém oboru názvů) je definován takto - xmlns: SpaceName \u003d „URL“, například:
xmlns: store \u003d "http://store.ru"

Proč potřebuji URL?

Proto je zadán určitý jedinečný identifikátor, který také identifikuje autora oboru názvů.

Přirozeně se předpokládá, že osoba, která specifikovala jmenný prostor, je extrémně čestná osoba, která uvedla své stránky a nepoužívá několik různých jmenných prostorů s jedním webem.

Mimochodem, obvykle označují nejen adresu URL webu, ale adresu URL konkrétní složky na webu, takže pokud existuje, můžete vytvořit jiný jmenný prostor v jiné složce na webu a použít jej v jiné situaci.

Objekt je samostatná datová struktura, která obsahuje všechna svá data.

Protože XML popisuje strukturovaná data, tj. Ve formě struktury, která má své vlastní vlastnosti atd., Můžete se na ně dívat jako na objekty.

V daném příkladu to může být objekt LIST s vlastností a vnořenou položkou.

DOM je způsob, jak zacházet se souborem XML nikoli s textem v konkrétním formátu, ale jako s kolekcí objektů s vlastnostmi, poli atd.

Popis souboru XML

Pokud neustále používáme soubor určité struktury pro výměnu mezi dvěma programy, pravděpodobně bychom chtěli:

  • Použít určitá jména
  • Chcete-li mít položky, které očekáváme (které „musí být použity pro naši výměnu“)
  • Aby atributy označovaly typy, které očekáváme (řetězec, číslo atd.).

K popisu struktury XML (které jsou také uloženy v souboru prostého textu) existují následující standardy formátu souborů:

  • Rozšíření DTD - definice typu dokumentu
  • Rozšíření XSD - XML \u200b\u200bShema.

Oba formáty popisují, jak by dokument měl být. Postup kontroly souladu XML se standardem popsaným v takovém souboru se nazývá ověření.

XDTO 1C je nástroj, který umožňuje přidat do konfigurace popis souboru XML. Nejde spíše o soubor, který je popsán, ale o konkrétní struktury XML.

K označení typů, které lze použít, se používá seznam, knihovna typů s názvem továrna XDTO 1C.

V této továrně jsou uvedeny oba jednoduché typy (řetězec, číslo, datum), které se obvykle používají v jiných jazycích, programech atd., Ale také typy 1C, které se používají v 1C a v konkrétní konfiguraci.

Samotná továrna XDTO 1C se skládá z několika balíčků. Základní typy jsou popsány v balíčku s názvem www.w3.org

Datové typy aktuální konfigurace jsou popsány v balíčku http://v8.1c.ru/8.1/data/enterprise/current-config

Samotné typy jsou pojmenovány podle názvu v konfigurátoru s přidáním zobrazení v anglickém jazyce (CatalogRef, CatalogObject, DocumentRef, DocumentObject), například:

CatalogObject. Nomenklatura

Přidání balíčku XDTO 1C

Určitě to zní skvěle. A ještě jsme se nedostali k tématu XSLT - způsobu transformace souborů XML na něco jiného, \u200b\u200bnapříklad HTML. Téma XML je extrémně rozsáhlé a obtížné ho zahrnout i do samostatné knihy.

Naším úkolem je pochopit, že XDTO 1C nám umožňuje popsat, jaké prvky by měl mít balíček XML, které je třeba generovat nebo číst.

Balíčky XDTO 1C jsou umístěny v konfiguraci ve větvi balíků Obecné / XDTO 1C.

Balíček XDTO můžete přidat do 1C ručně (super!), Ale je lepší získat odpovídající soubor XSD s popisem připraveného schématu.

Popis schématu XSD objektů jakékoli konfigurace lze získat kliknutím na větev General / XDTO 1C packages a výběrem položky nabídky Export XML configuration schema.

Soubor je textový, můžete jej upravit v programu Windows Poznámkový blok a odstranit nepotřebné a nepotřebné objekty.

Hotové schéma XSD můžete přidat do 1C kliknutím pravým tlačítkem na větev General / XDTO 1C packages a výběrem položky nabídky Import XML Schema.

Pomocí mechanismu XDTO 1C

Práce s XDTO 1C znamená převod hodnot do az XML.

Práce je prováděna pomocí objektů jazyka 1C Read XML / Write XML.

Při práci s mechanismem XDTO 1C musíte určit balíček, se kterým pracujete. Může to být typický balíček (popsaný výše, viz XDTO) nebo balíček přidaný do konfigurace. Balíček je identifikován podle adresy URL uvedené v balíčku.

Dva hlavní jednoduché způsoby práce jsou:

  • Serializace - automatický převod hodnot z 1C na XML a naopak
  • Vytvoření objektu, vyplnění jeho polí, zápis do XML (a tedy čtení z XML a následné čtení jeho polí).

Příklad serializace hodnoty:
Serializer \u003d Nový XDTO Serializer (XDTO Factory);
Soubor XML \u003d Nová položka XML ();
XML File.OpenFile ("FileName");
Serializer.WriteXML (FileXML, Value1C);

Příklad čtení / zápisu objektu:

ReferenceXDTOObject \u003d XDTOFactory.Create (XDTOFactory.Type ("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Warehouses"));
FillPropertyValues \u200b\u200b(DirectoryXDTOobject, DirectoryLink1C);

Platformy: 1C: Enterprise 8.3, 1C: Enterprise 8.2, 1C: Enterprise 8.1
Konfigurace: Všechny konfigurace

2012-11-25
34938

XDTO je mechanismus, který je nezbytný při vytváření a spouštění webových služeb. Balíčky XDTO se používají k popisu struktury požadovaného souboru XML, který je vyžadován pro změnu dat z XML na XML.

XML je způsob, jak popsat složitou datovou strukturu v souboru prostého textu. Popisuje nejen samotná data, ale také pole, kde jsou uložena.
Tady je základní příklad souboru XML:

XML pro figuríny

Názvy (tagy) použité v tomto souboru - root, list, name, el - mohou být naprosto libovolné. Základní pravidla pro vytvoření souboru XML jsou okamžitě viditelná z jeho struktury:
- Vnoření prvků je možné;

Začátek prvku<Имя>, konec je stejný název, ale s připojeným znakem „/“.

Uvnitř prvku může být:
- Vnořené prvky;
- Text.

Každý prvek může mít vlastnosti (atributy), má hodnotu a název. V XML je zakázáno používat jakékoli znaky, protože několik z nich se používá přímo pro XML, například „<» и «>". Metoda popisu v XML je velmi vhodná pro použití při výměně s jinými programy třetích stran a používá se v mechanismu výměny dat 1C.

Jmenný prostor

Soubor XML začíná záhlaví popisující verzi XML, kódování atd. Záhlaví XML je volitelné a velmi často se jednoduše nepoužívá. Záhlaví může také definovat - jmenné prostory.

Soubory XML jsou přenášeny přes internet a jsou čteny mnoha různými programy. Perceived - to znamená, že jejich kód má ochranu - pokud narazíte na určitý název prvku v souboru XML, musíte to tak vnímat a dělat přesně toto. Když tedy použijeme značku IBM, existuje dostatečně velká šance, že si druhý program bude myslet, že je to IBM, která je mu známá, zatímco jsme tím mysleli něco vlastního.

Aby se tomu zabránilo a aby se jasně označil rozdíl mezi naší IBM a všemi ostatními, je možné v souboru nastavit název oboru názvů - předponu použitou před názvem prvků.

Obor názvů (jmenný prostor) můžete definovat následovně - xmlns: Prefix (SpaceName) \u003d “URL”, příklad:
xmlns: store \u003d "http://site.ru"

Proč je potřeba URL? Kdokoli již přemýšlel a hledá dále - samozřejmě, jmenný prostor, který jsme vynalezli, také nemusí být jedinečný, tj. kdokoli jiný to může také použít. Proto je zadán speciální jedinečný identifikátor, který také identifikuje exekutora jmenného prostoru.

Je přirozeně naznačeno, že osoba, která určila jmenný prostor, je mimořádně čestná. Ukazuje na svůj web a nepoužívá více různých jmenných prostorů se stejným webem. Je pravidlem, že je označena jak adresa URL webu, tak adresa URL konkrétní složky na webu, aby bylo možné ve složce na tomto webu vytvořit další jmenný prostor pro jeho použití v jakékoli situaci.

DOM

Objekt je konkrétní datová struktura, která je soběstačná a která obsahuje všechna svá data.

Vzhledem k tomu, že strukturovaná data jsou popsána v souboru XML, to znamená data ve formě struktury, která má své vlastní vlastnosti atd., Takže se na ně můžete dívat jako na objekty. Ve výše uvedeném příkladu lze použít objekt LIST s vlastnostmi a vnořenou položkou.

DOM je způsob, jak zacházet se souborem XML nikoli s textem v určitém formátu, ale jako s kolekcí objektů s poli, vlastnostmi a dalšími.

Nevýhody této metody práce zahrnují vysoké požadavky na výkon PC. DOM zpracovává (tvoří strukturu ve formě objektů) celý soubor XML najednou, bez ohledu na jeho velikost, a jednoduše nemůže „strávit“ soubory velké velikosti (více než 4 GB).

Pro analýzu velkých souborů se používá SAX, tato metoda analýzy souboru je založena na sekvenčním čtení souboru, a nikoli na budování celé jeho struktury najednou .

Popis souboru XML

Pokud po celou dobu používáme soubor konkrétní struktury k výměně mezi 2 programy, pravděpodobně bychom chtěli následující:

Chcete-li použít konkrétní názvy;
- Použít pouze ty prvky, které očekáváme (které „musí existovat pro použití výměnou“);
- Aby atributy označovaly pouze ty typy, které očekáváme (číslo, řetězec atd.).

K popisu struktury XML existují následující formáty souborů (také uložené v souboru prostého textu):

Přípona DTD je definice typu dokumentu;
- Rozšíření XSD je XML Shema.

Tyto formáty popisují, jak by dokument měl být. Postup kontroly shody XML, který je popsán v takovém standardním souboru, se nazývá ověření.

XDTO

XDTO je objekt 1C, který umožňuje přidat do konfigurace popis souboru XML. Přesněji řečeno, není popsán samotný soubor, ale určité struktury XML.

K označení typů, které lze použít, se používá seznam, knihovna typů s názvem továrna XDTO. Tato továrna specifikuje nejen jednoduché typy (datum, řetězec, číslo), které se používají v jiných programech, jazycích atd., Ale také typy 1C používané v 1C a v určité konfiguraci.

Továrna XDTO obsahuje několik balíčků. Počáteční typy jsou popsány v balíčku s názvem www.w3.org Datové typy v konfiguraci jsou popsány v balíčku http://v8.1c.ru/8.1/data/enterprise/current-config

Tyto typy jsou pojmenovány podle názvů v konfigurátoru s přidáním formuláře v anglickém jazyce (CatalogRef, DocumentObject, CatalogObject, DocumentRef), například:

CatalogObject.Contractors

Přidání balíčku XDTO

Dostali jsme se k tématu XSLT - způsobu, jak transformovat soubory XML na něco jiného, \u200b\u200bnapříklad soubory HTML. XML je obrovské téma a byla k němu napsána více než jedna kniha.

Naším úkolem je pochopit, že XDTO nám umožňuje popsat prvky, které by měly být v balíčku XML, který je třeba číst nebo tvořit. Balíčky XDTO jsou umístěny v konfiguraci 1C a ve větvi Obecné - balíčky XDTO.

Je možné přidat balíček XDTO do 1C ručně, ale je nejlepší získat odpovídající soubor XSD s hotovým podrobným popisem schématu. Popis schématu objektů XSD jakékoli konfigurace lze získat kliknutím na větev Obecné - balíčky XDTO a výběrem položky „Exportovat schéma konfigurace konfiguračních dat XML“ v nabídce.

Tento textový soubor můžete upravit v programu Poznámkový blok systému Windows a zároveň odstranit nepotřebné objekty (pro vás zbytečné). Je možné přidat připravené schéma XSD do 1C kliknutím pravým tlačítkem na větev Obecné - balíčky XDTO a výběrem položky „Importovat XML schéma“ v nabídce.

Práce s XDTO v 1C se nazývá převod hodnot z XML na XML. To se provádí pomocí objektů 1C jazyk Přečtěte si XML / XMLWrite.

Při práci s XDTO musíte přímo určit balíček, se kterým pracujete. Může to být buď typický balíček (viz diskuse výše, XDTO), nebo balíček přidaný do konfigurace.

Balíček je identifikován podle adresy URL uvedené v balíčku. Existují dva hlavní způsoby práce - to jsou:

Serializace - automatická změna hodnot z XML na 1C a naopak;

Vyplňování polí objektů, jejich vytváření a zápis do XML (stejně jako čtení z XML a následné čtení jeho polí).

Zde je příklad serializace hodnoty:

Serializer \u003d Nový XDTO Serializer (XDTO Factory);
Soubor XML \u003d Nový záznam XML ();
XMLFile.OpenFile ("FileName");
Serializer.WriteXML (XMLFile, hodnota 1C);

Inverzní funkcí je Serializer. XMLReader (), použitý z 1C objektů jazyka XMLReader.
Příklad zápisu / čtení objektu:

XDTO ReferenceObject \u003d XDTOFactory.Create (XDTOFactory. Type ("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Contractors"));
FillPropertyValues \u200b\u200b(XDTOObject Directory, Directory.Contractors.FindByRequisite ("Name", "Ivanov) .Link);

Poté můžete vytvořený objekt zapsat do XML přesně stejným způsobem jako serializace. Při čtení XML stejným způsobem, jak je popsáno výše, nemusí vrátit hodnotu XDTO, ale pouze takový objekt.

Při vytváření objektu XDTO se vytvoří struktura podobná struktuře konfiguračního objektu (pokud samozřejmě vytvoříte konfigurační objekt z balíčku, který je uveden ve výše uvedeném příkladu). Typická pole (název, kód atd.) Jsou v angličtině a objekt je vytvořen prázdný, takže je nutné jej vyplnit, každé pole zvlášť nebo pomocí funkce FillPropertyValues

Formát XML je velmi populární při výměně různých textových dokumentů mezi informačními systémy. Schopnost vytvořit jedinečnou strukturu dokumentů umožňuje její použití v mnoha oblastech - elektronické knihovny, WEB, import / export a mnoho dalších. Bez možnosti pohodlné práce s tímto formátem by systémy 1C nemohly získat takovou popularitu. Protože 1C aktivně využívá WEB technologie, měl by každý vývojář umět číst XML a zapisovat do nich informace.

Prezentace a čtení XML souborů

Jednou z klíčových výhod značkovacího jazyka XML je jeho poměrně pohodlná a intuitivní struktura a syntaxe. Při jeho vytváření si autoři stanovili cíl vytvořit značkovací jazyk, který by byl snadno čitelný jak pro lidi, tak pro počítače. XML se dnes velmi vyvinul do jiných formátů, ale zůstává populární a široce používaný. Struktura souboru XML je sestavena podle následujícího schématu:

Pro zvážení příkladu importu dat do 1C bude stačit výše uvedený soubor. Aby byla písemná procedura schopna číst soubor XML, stačí předat cestu k samotnému souboru. To lze provést prostřednictvím rozhraní, tím, že uživatelům umožníte určit soubor sami, nebo pevným kódem v textu zpracování.

Jedním z populárních způsobů práce s XML do 100 MB v 1C je použití Document Object Model (DOM). Jeho význam je postupné zpracování všech uzlů dokumentu zastoupených v XML. Ve vestavěném jazyce 1C vypadá tento algoritmus takto:

  1. Deklarace mechanismů, kterými se čte soubor XML; Cyklus pro procházení uzlů;
  2. Čtení dat a atributů v uzlu;
  3. Informační výstup. V případě potřeby může v této fázi dojít k zápisu do proměnných nebo přímo do požadovaných tabulek;
  4. Dokončení mechanismu.
& Procedura AtServer ReadAtServer (FilePath) // deklarace mechanismůReader Mechanismus \u003d nový XMLReader; Reader.OpenFile (FilePath); Builder \u003d New BuilderDOM; Document \u003d Builder.Read (modul čtečky); // smyčka pro procházení uzlů pro každou položku z cyklu Document.DocumentElement.ChildNodes // načítání dat Pokud item.NodeName \u003d "položka", pak položka \u003d položka; Pro každou hodnotu From product.ChildrenNodes Cycle If values.NodeName \u003d "Název", pak Název \u003d hodnoty; Color \u003d Name.Attributes.GetNamedElement ("Color"); ElseIf values.NodeName \u003d "Cena", pak Cena \u003d hodnoty; Měna \u003d Cost.Attributes.GetNamedElement ("Měna"); EndIf; Konec cyklu; // zobrazit zprávy Report ("Název:" + Name.TextContent + "; color:" + Color.Value + "; Cena:" + Cost.TextContent + "; Měna:" + Currency.Value); EndIf; Konec cyklu; // zavřete Reader Mechanism.Close (); Konec postupu

Výsledkem je, že uživateli zobrazujeme zprávy s importovanými daty. Můžete také dát všechna data do požadované struktury a na jejím základě naprogramovat vytvoření dokumentu nebo záznamů v adresáři. Rychlost práce 1C s xml je poměrně vysoká, proto se tento formát stále častěji používá při výměně dat s jinými zdroji.

Abychom mohli nahrát informace, musíme také pracovat se soubory XML. Uvažujme příklad záznamu pomocí objektu platformy 1C XML Record a nahrajme data na nomenklaturu. Jeho hlavními výhodami jsou jednoduchost kódu a rychlost zpracování dat. Algoritmus na straně serveru pro zápis souboru XML lze reprezentovat v několika po sobě následujících krocích:

  1. Připojit k souboru XML;
  2. Vytváříme prvky hlavy a zapisujeme do nich data. Pokud chcete nahrát velké množství informací do souboru XML, pak v této fázi použijete smyčky. Buďte opatrní a pamatujte, že je nutné dotazovat se na data před smyčkou, nikoli v ní;
  3. Zavřeme soubor.
// otevřete soubor Nomenclatura.xml a zapište hlavní prvek RecordVFile \u003d New RecordXML (); WriteInFile.OpenFile ("D: \\ Nomenclatura.xml", "UTF-8"); WriteInFile.3WriteElementBeginning ("Produkty"); // výběr dat pro záznam SelectionFromDirectory \u003d Directories.Nomenclature.Select (); // cyklus, ve kterém probíhá zápis While FetchingFrom z cyklu Directory.Next () // zápis nových dat WriteInFile.WriteElementStart ("Product"); WriteVFile.WriteAttribute ("Název", Výběr z Directory.Name); WriteVFile.WriteAttribute ("InitialPrice", String (SelectionFrom z Reference.InitialPrice)); WriteInFile.WriteElementEnd (); Konec cyklu; // Zavřete hlavní prvek a soubor WriteVFile.WriteEndElement (); WriteInFile.Close ();

Mechanismus XDTO v 1C

Vývojáři společnosti 1C vytvořili vlastní mechanismus pro výměnu informací prostřednictvím XML - XDTO (XML Data Transfer Objects). Počínaje verzí 8.1 má platforma schopnost vyměňovat si data s jinými systémy, aniž by se ponořila do vytváření souboru XML. Většinu technických problémů řeší 1C a my jen musíme uvést údaje potřebné k vytvoření XML. Je pravda, že za tímto účelem musí vývojář předem provést nějaké manipulace.

Chcete-li načíst soubor XML pomocí XDTO, musíme 1C říct strukturu souboru. Přenáší se prostřednictvím sady schémat, která lze vytvořit v textovém editoru nebo použít specializovaný program. Výsledkem by měl být soubor, který popisuje obecnou strukturu a datové typy použité v souboru XML. Před čtením nebo zápisem nového XML musí vývojář načíst své schéma do konfigurace v sekci XDTO Packages.

V tomto případě vytvořme ručně jednoduchý balíček, aby 1C například porozuměla struktuře našeho souboru. Aby bylo vytvoření souboru úspěšně dokončeno, musíme si v diagramu promyslet, že máme hlavní prvek a přílohu s atributy. Vytvořené schéma musí být exportováno do souboru xsd a přeneseno spolu s xml, aby druhá strana nemusela řešit strukturu a znovu vytvářet balíček xdto.


Algoritmus na straně serveru podobný předchozímu pomůže uložit nový XML na pevný disk. Jediným rozdílem je potřeba přidat data pro 1 produkt do továrny XDTO - speciální mechanismus platformy 8,3 1C. Pokud je potřeba udělat více úrovní vnoření, budete muset popsat každý hlavní prvek.

// Otevřete soubor XML RecordVFile \u003d Nový záznam XML; WriteInFile.OpenFile ("D: \\ Nomenclatura.xml", "UTF-8"); // Určete 1C, jaký typ dat má být vytvořen - hlavní prvek AllGoods \u003d FactoryXDTO.Create (FactoryXDTO.Type ("http://wiseadviceXML.org", "Zboží")); // výběr dat pro vyložení SelectionFromDirectory \u003d Directories.Nomenclature.Select (); // Přidání jednotlivých produktů do prvku head While SelectedFromDirectory.Next () cycle Produkt \u003d FactoryXDTO.Create (FactoryXDTO.Type ("http://wiseadviceXML.org", "Produkt")); Item.Name \u003d SampleFrom z Directory.Name; Product.StartPrice \u003d String (SampleFromDirectory.StartPrice); AllProducts.Add (Produkt); Konec cyklu; // zapíše data a zavře soubor XDTO Factory.WriteXML (WriteVFile, AllGoods); WriteInFile.Close ();

Uvažované mechanismy jsou poměrně univerzální a pokud jsou správně nakonfigurovány, mohou vyřešit většinu problémů. V interakci mezi 1C a XML však existuje mnoho nuancí. Je mnohem efektivnější studovat je v reálných podmínkách, a ne na testovacích problémech, kdy zpracování XML souboru řeší poměrně úzké problémy.

Anotace: Schéma dat XML (XSD). Vytvoření schématu XSD v Visual Studio .NET. Vytvoření zadané datové sady. Získání informací o struktuře objektu DataSet. Načítání dokumentů XML a schémat XSD do typových a běžných datových sad. Metody ReadXml a ReadXmlSchema. Zápis obsahu a struktury typované a běžné datové sady. Metody WriteXml a WriteXmlSchema

Typovaný objekt DataSet. Čtení a psaní dokumentů XML

Schéma dat XML (XSD)

Datová schémata 1 Přesný překlad dokumentu schématu XML -< schéma dokumentu XML\u003e v následujícím textu však použijeme výraz „XML Data Schema“. XSD (XML Schema Document, XSD) je alternativní způsob konstrukce dokumentů XML. Ve srovnání s DTD jsou schémata účinnější při definování složitých datových struktur, poskytují jasnější způsob popisu gramatiky jazyka a lze je snadno modernizovat a rozšířit. Schéma XSD může obsahovat následující informace:

  • reprezentace vztahů mezi datovými položkami, podobně jako vztahy cizích klíčů mezi tabulkami v relační databázi;
  • prezentace jedinečných identifikátorů podobných primárnímu klíči;
  • specifikace typu data pro každý jednotlivý prvek a atribut v dokumentu XML.

Chcete-li vytvořit datové schéma v aplikaci Visual Studio .NET, přejděte v hlavní nabídce do složky File \\ New \\ File a v seznamu šablon vyberte schéma XML (viz obr. 11.3). Zobrazí se okno se slovy „Chcete-li začít, přetáhněte objekty z okna Server Explorer nebo Toolbox do pracovního prostoru (návrhová oblast) nebo klepněte pravým tlačítkem myši“ (Obrázek 11.1):


Postava: 11.1.

Jde o to, že jsme v návrhovém režimu. Přepneme do režimu kódu, pro který stiskneme tlačítko (XML):

První řádek je známou indikací, že schéma je dokument XML s kořenovým prvkem xs: schema. Předpona xs: předpona všech prvků schématu označuje jejich jmenný prostor. Druhý řádek obsahuje dlouhý, podrobný a často zcela zbytečný popis schématu (ve srovnání s podobným kódem pro stránky HTML). Pro správnou funkci se stačí omezit na následující reprezentaci:

Integrované vykreslovací moduly studia však předpokládají, že je tato hlavička přítomna, takže by neměla být odstraněna. Vytvoření schématu, které popisuje daný dokument XML v Visual Studio .NET, je poměrně přímočarý úkol. Vytvořme následující dokument XMLEasy.xml:

1

Přepněte na kartu (Data) a zobrazte pouze jeden záznam (obr. 11.2).


Postava: 11.2.

Existuje několik způsobů, jak vytvořit schéma popisující tento dokument: v hlavní nabídce vyberte položku „XML \\ Vytvořit schéma“ (obr. 11.3, A), v režimu XML vyberte v kontextové nabídce stejnou položku (obr. 11.3, B), v nabídce Data v místní nabídce vyberte tuto položku (obr. 11.3, C) a nakonec v režimu Data klikněte na tlačítko na panelu nástrojů XML (obr. 11.3, D).


Postava: 11.3.

V každém případě se schéma dokumentu objeví ve formě tabulky (obr. 11.4). Nyní nechme režim schématu a přepněte do režimu (XML).


Postava: 11.4.

Prostředí vygenerovalo XML, které popisuje strukturu dokumentu:

Zahrnuje také popis požadovaný pro další manipulaci se schématem pomocí objektů ADO .NET. V původním dokumentu XMLEasy.xml se objevil odkaz na datové schéma:

Dokument XMLEasy.xsd byl automaticky vytvořen ve stejném adresáři jako XMLEasy.xml.

Abyste se naučili rozumět schémat XSD, měli byste nejprve pracovat s popisem dat v jejich čisté formě, bez dalších prvků. Tabulka 11.1 uvádí seznam nejjednodušších dokumentů XML a jejich schémat generovaných bez vazby na objekty ADO .NET.

Tabulka 11.1. Příklady skládání schémat XSD
Obsah dokumentu XML Obsah schématu XSD

1

Popis
V dokumentu XMLEasy.xml je prvek TOUR kořenový prvek obsahující podřízený prvek IDTOUR. Obecné schéma kořenového prvku je následující:

: Obsah prvku ...

Podřízené prvky jsou popsány takto:

Obsah dokumentu XML Obsah schématu XSD

1 Kypr 25 000,00 RUB Cena dvou poukazů pro dospělé zahrnuje cenu jednoho dítěte (do 7 let) 2 Řecko 32 000,00 rub. V srpnu a září platí speciální slevy 3 Thajsko 30 000,00 RUB Bez letenek 4 Itálie 26 000,00 rub. Snídaně v hotelu je zahrnuta v ceně voucheru 5 Francie 27 000,00 RUB Další výlety nejsou zahrnuty v ceně voucheru

Popis
Kořenový prvek TABLE obsahuje prvek TOUR, který se zase skládá ze skupiny dětí. Prvek výběru definuje výběr dalších prvků, přičemž „neomezená“ hodnota atributu maxOccurs označuje, že lze skupiny TOUR neomezeně.

: :

Obsah dokumentu XML Obsah schématu XSD

1 Kypr 25 000,00 RUB 1 Cena dvou poukazů pro dospělé zahrnuje cenu jednoho dítěte (do 7 let)


Postava: 11.5.
Popis
Pro prvek IDTOUR byl ve výchozím nastavení nastaven datový typ int, pro prvek CLOSED - booleovský typ, pro zbytek - typ řetězce. Datový typ můžete změnit přímo v režimu datových schémat XML, ale je to pohodlnější - v režimu schématu (v tomto případě se režim bude jmenovat DataSet) vyberte z rozevíracího seznamu datový typ (obr. 11.5):

V softwaru kurzu najdete všechny soubory pro tuto tabulku ve složce XSD (Code \\ Glava5 \\ XSD).

Jedním ze způsobů omezení obsahu je nastavení datového typu v dokumentu XML (poslední příklad je tabulka 11.1). Další atributy se používají k omezení hodnoty daného typu. V následujícím fragmentu diagramu musí být hodnota PRICE prvku v rozsahu od 50 do 100:

K omezení dokumentu XML na určité pevné hodnoty se používá následující konstrukce:

Zde prvek NAME může mít pouze jednu pevnou hodnotu z pěti názvů zemí.

Vývoj schématu XSD je docela pečlivá práce. Díky vizuálům Visual Studio .NET je tento úkol mnohem jednodušší. Aby bylo možné zvládnout základní pojmy, je vhodné prostudovat několik automaticky generovaných schémat dokumentů XML. Tabulky 11.2-11.4 popisují základní prvky a atributy, se kterými se lze setkat.

Tabulka 11.2. Prvky schématu XSD
Živel Popis
všechno Vnořené prvky lze zadat v libovolném pořadí
anotace Nadřazený prvek komentářů a
žádný Jakékoli vnořené prvky
anyAttribute Jakékoli atributy
appInfo Prvek komentáře. Určuje název schématu
atribut Atribut
skupina atributu Skupina atributů
výběr Výběr dalších prvků. Analog operátora "|" v DTD
komplexní obsah Omezení nebo rozšíření modelu komplexní obsah
complexType Prvek složitého typu
dokumentace Prvek komentáře. Poskytuje informace o schématu
živel Živel
rozšíření Rozšíření prvků
pole Polní deklarace. Platí uvnitř prvku definovat pole
skupina Skupina prvků
import Import deklarace typu z jiného schématu
zahrnout Zahrnutí dalšího schématu do existujícího oboru názvů
klíč Nastavení prvku nebo atributu pomocí klíče směřujícího k jinému prvku
keyref Určení prvku nebo atributu, na který ukazuje klíč
seznam Prvek, který může obsahovat seznam hodnot
předefinovat Přepsání již deklarovaných prvků
omezení Omezení prvku
schéma Prvek kořenového schématu
volič Selektor pro výběr prvků XML
sekvence Posloupnost dalších prvků. Analog operátoru „,“ v DTD
simpleContent Model, jehož obsah představuje pouze znaková data
simpleType Prvek jednoduchého typu
unie Prvek nebo atribut, který může mít více hodnot
unikátní Prvek nebo atribut, který musí mít jedinečnou hodnotu
Tabulka 11.3. Atributy - Omezení schématu XSD
Atribut Popis
enumeration Seznam hodnot
délka Délka
maximální délka Maximální délka
min. délka Minimální délka
maxExkluzivní Maximální hodnota
maxInclusive Maximální hodnota včetně
minExkluzivní Minimální hodnota
minInkluzivní Minimální hodnota včetně
zlomek číslic Počet desetinných míst ve zlomcích
celkem číslic Počet číslic
vzor Ukázkový (vzorový) obsah prvků
výchozí Výchozí hodnota prvku nebo atributu
elementFormDefault Nastavení vlastností místního prvku, jak je globálně definováno
pevný Pevná hodnota prvku nebo atributu
formulář Lokálně deklarované prvky jsou definovány v konkrétních instancích dokumentu
itemType Seznam typů položek
členské typy Typ členů použitých v unii
maxOccurs Maximální počet výskytů prvku
minVyskytuje se Minimální počet výskytů prvku
smíšený Nastavení prvku smíšeného typu
název Název prvku nebo atributu
jmenný prostor Jmenný prostor
noNamespace Určení umístění schematického dokumentu,
SchemaLocation nemají žádné výsledné jmenné prostory
nillable Určení, že prvek může být null (nil)
ref Nastavení odkazu na globálně definovanou položku
schemaLocation Nalezení schématu
substitutionGroup Určení nahrazení prvků jinými prvky
targetNamespace Výsledný obor názvů schémat
typ Typ položky
použití Je položka požadována nebo ne
hodnota Hodnota prvku schématu
xsi: nula Nastavení skutečného obsahu prázdného (NULL) prvku v dokumentu XML
xsi: schemaLocation Skutečné umístění prvku v dokumentu XML
xsi: typ Skutečný typ prvku v dokumentu XML