SDXF - SDXF
SDXF (Formát výměny strukturovaných dat) je serializace dat formát definovaný RFC 3072. Umožňuje sestavení libovolných strukturovaných dat různých typů do jednoho souboru pro výměna mezi libovolnými počítači.
Schopnost libovolně serializovat data do samopopisného formátu připomíná XML, ale SDXF není textový formát (jako XML) - SDXF není kompatibilní s textovými editory. Maximální délka základny (složené i základní) kódované pomocí SDXF je 16777215 bajtů (jeden méně než 16 MiB ).
Formát technické struktury
Data SDXF mohou vyjadřovat libovolné úrovně strukturální hloubky. Datové prvky jsou samodokumentování, což znamená, že metadata (číselný, znakový řetězec nebo struktura) jsou zakódovány do datových prvků. Návrh tohoto formátu je jednoduchý a transparentní: počítačové programy přistupují k datům SDXF pomocí dobře definovaných funkcí, což programátory osvobozuje od přesného rozložení dat.
Slovo „výměna“ v názvu odráží další druh transparentnosti: funkce SDXF poskytují nezávislou konverzi dat na architektuře počítače. Serializace lze mezi počítači vyměňovat (prostřednictvím přímé sítě, přenosu souborů nebo CD) bez dalších opatření. Funkce SDXF na architektonické úpravě rukojeti přijímací strany.
Strukturovaná data jsou data s předvídatelnými vzory složitější než řetězce textu.[1]
Příklad
Komerční příklad: dvě společnosti si chtějí vyměňovat digitální faktury. Faktury mají následující hierarchickou vnořenou strukturu:
INVOICE│├─ INVOICE_NO ├─ DATE├─ ADDRESS_SENDER│ ├─ NAME│ ├─ NAME│ ├─ STREET│ ├─ ZIP│ ├─ CITY│ └─ COUNTRY├─ ADDRESS_RECIPIENT│ ├─ NAME│ ├─ NAME│ ├─ ULICE │ ├─ ZIP│ ├─ CITY│ └─ COUNTRY├─ INVOICE_SUM├─ SINGLE_ITEMS│ ├─ SINGLE_ITEM│ │ ├─ QUANTITY│ │ ├─ ITEM_NUMBER│ │ ├─ ITEM_TEXT│ │ ├─ CHARGE│ │ └─ SUM│ └─ ... ├─ PODMÍNKY ...
Struktura
Základním prvkem je kus. Serializace SDXF je sama o sobě kusem. Chunk se může skládat ze sady menších chunků. Chunky se skládají z předpony záhlaví šesti bajtů, následovaných daty. Záhlaví obsahuje identifikátor bloku jako dvoubajtové binární číslo (Chunk_ID), délku a typ bloku. Může obsahovat další informace o kompresi, šifrování a další.
Typ bloku označuje, zda se data skládají z textu (řetězec znaků), binárního čísla (celé číslo nebo plovoucí desetinná čárka) nebo zda je blok složený z jiných bloků.
Strukturované bloky umožňují programátorovi zabalit hierarchické konstrukce, jako je výše uvedený INVOICE, do struktury SDXF následovně: Každému pojmenovanému výrazu (INVOICE, INVOICE_NO, DATE, ADDRESS_SENDER atd.) Je přiděleno jedinečné číslo v rozsahu 1 až 65535 (2 bajt bez znaménka binární celé číslo bez znaménka). Horní / nejvzdálenější blok je konstruován s ID INVOICE (tj. S přidruženým číselným chunk_ID) jako strukturovaný blok na úrovni 1. Tento blok INVOICE je naplněn dalšími bloky na úrovni 2 a dále: INVOICE_NO, DATE, ADDRESS_SENDER, ADDRESS_RECIPIENT, INVOICE_SUM, SINGLE_ITEMS, PODMÍNKY. Některé bloky úrovně 2 jsou strukturovány postupně jako pro dvě adresy a SINGLE_ITEMS.
Přesný popis naleznete na straně 2 RFC nebo alternativně zde.[2]
SDXF umožňuje programátorovi pracovat na strukturách SDXF s kompaktní sadou funkcí. Existuje jen několik z nich:
Chcete-li číst bloky, je třeba použít následující funkce:
- inic
- Chcete-li inicializovat strukturu parametrů a propojení s existujícím blokem.
- vstoupit
- Chcete-li vstoupit do strukturovaného bloku, je první blok této struktury připraven ke zpracování.
- odejít
- Opustit aktuální strukturu. Tato struktura je již aktuální.
- další
- Přechod na další blok, pokud existuje (jinak opustí aktuální strukturu).
- výpis
- K přenosu (a přizpůsobení) dat z aktuálního bloku do programové proměnné.
- vybrat
- Prohledat další blok s daným ID bloku a nastavit jej aktuální.
K sestavení bloků je třeba použít následující funkce:
- inic
- Chcete-li inicializovat strukturu parametrů a propojení s prázdnou výstupní vyrovnávací pamětí pro vytvoření nového bloku.
- vytvořit
- Vytvořte nový blok a připojte jej k aktuální existující struktuře (pokud existuje).
- připojit
- Připojte kompletní blok ke struktuře SDXF.
- odejít
- Opustit aktuální strukturu. Tato struktura je již aktuální.
Následující pseudo kód vytváří faktury:
inic (sdx, velikost vyrovnávací paměti=1000); // inicializuje strukturu parametrů SDXF sdx vytvořit (sdx, ID=FAKTURA, datový typ=STRUKTUROVANÉ); // začátek hlavní struktury vytvořit (sdx, ID=FAKTURA ČÍSLO, datový typ=NUMERICKÉ, hodnota=123456); // vytvoření elementárního bloku vytvořit (sdx, ID=DATUM, datový typ=CHAR, hodnota="2005-06-17"); // ještě jednou vytvořit (sdx, ID=ADDRESS_SENDER, datový typ=STRUKTUROVANÉ); // Spodní konstrukce vytvořit (sdx, ID=NÁZEV, datový typ=CHAR, hodnota=„Peter někdo“); // prvek. Kus uvnitř této spodní konstrukce ... vytvořit (sdx, ID= ZEMĚ, datový typ=CHAR, hodnota="Francie"); // poslední uvnitř této spodní konstrukce odejít; // uzavření spodní stavby ADDRESS_SENDER ... odejít; // uzavření spodní stavby FAKTURA
Pseudokód pro extrakci struktury INVOICE může vypadat takto:
inic (sdx, kontejner=ukazatel na an SDXF-struktura); // inicializuje strukturu parametrů SDXF sdx vstoupit (sdx); // připojte se ke struktuře INVOICE. // zatímco (sdx.rc == SDX_RC_ok) { přepínač (sdx. Chunk_ID) { případ FAKTURA ČÍSLO: výpis (sdx); invno = sdx.hodnota; // funkce extraktu vloží celočíselné hodnoty do pole parametru „hodnota“ přestávka; // případ DATUM: výpis (sdx); strcpy (napadnout, sdx.data); // sdx.data je ukazatel na extrahovaný řetězec znaků přestávka; // případ ADDRESS_SENDER: vstoupit (sdx); // používáme 'enter', protože ADDRESS je strukturovaný blok dělat zatímco (sdx.rc == SDX_RC_ok) // vnitřní smyčka ... přestávka; ... } }
SDXF není navržen pro čitelnost ani pro úpravy textovými editory. Související upravitelná struktura je SDEF.
Viz také
- Zastoupení externích údajů
- Vyrovnávací paměti protokolu
- Abstract Syntax Notation One
- Apache Thrift
- Etch (protokol)
- Engine pro internetovou komunikaci
- Porovnání formátů serializace dat
Reference
- ^ Lze tvrdit, že „strukturovaný“ se zde používá ve stejném smyslu jako v strukturované programování - jako by neexistovaly gotos v (přísně) strukturovaném programu nejsou žádné ukazatele /Reference v SDXF. To však nemusí být způsob, jakým název vznikl.
- ^ "SDXF - 2. Popis formátu SDXF". Pinpi.com. Citováno 2013-09-10.
- ^ „6.3 Projekt PRNT: úplný příklad“. PINPI. Citováno 2013-09-10.