Az enums kezelése a w3c xml sémákban

Ha az adat-orientált XML-sel dolgozik, akkor gyakran "menedzselt szótárakat" kell működtetni, amelyek felsorolt ​​értékekként is ismertek. Nézzük meg a bank általános számlájának következő példáját:

Ebben a dokumentumban két kezelt szótára van. Az első egy valuta-szótár, az ISO-4217 szerinti három szimbólum valuta kód ("USD" egy amerikai dollár). A második a százalékos kerekítési szabály: "up", "down" és "closest". Példánkban a bank inkább a százalékos értékeket keresi le.

A rendszer kialakításakor felmerülő probléma az, hogy az ISO kódokat a tudásunkon kívül kezeljük. Ezek a kódok bármikor megváltoztathatók, és ha be vannak építve a sémába, akkor újra kell jelenteni, amikor az ISO szervezet megváltoztatja kódjait. És ez nagyon drága lehet. Ez különösen igaz a vállalkozásra, ahol a rendszer bármely módosítása - bár kicsi - a séma segítségével teljes körű tesztelést igényelhet.

Ez a cikk leírja, hogyan kell ellenőrizni a ellenőrzött szótárak használatával W3C XML-séma (W3C XML sémák), mivel ez az alap formátum specifikációja XML-alapú rendszerek XML-adatokat. Megjegyzendő, hogy a „szótár”, azt jelenti, az elemek listáját a felsorolt ​​attribútumok értékei, amely eltér más összefüggésekben, amelyek „szótárak” - egy sor XML elem nevét.

1. lépés: Monolitikus rendszer

Mielőtt elgondolkodna arról, hogy a kezelt szótárak közül melyik nincs a mi irányításunkból, az első dolog, hogy létrehozzunk egy sémát az általánosított fiókokhoz a W3C XML sémával. Ennek a cikknek a keretében a három karakteres ISO pénznemkódok egy részhalmazát használjuk. A megfelelő rendszernek a következő formája lesz:

Megjegyzés: a két ellenőrzött szótár (átutalás): egyszerű típusok és iso3currency roundingDirection - iso3currency hossza egyértelműen rögzíti, hogy 3, hogy a jövőben ne kínos helyesírási szerkesztésekor, amikor meg kell állítani a pénznemek listáját.

Azt is érdemes megjegyezni, hogy az értéke egy fakultatív attribútum lett állítva „1.0”. A lényeg, hogy ha dolgozik az XML-orientált adat-üzenetek, gyakran szükség van, hogy egyszerre több verzióját üzenet séma, mivel úgy tűnik, hogy lehetetlen egyszerre „felvonó” rendszer, és ezt a rendszert, hogy a legújabb verziót. Ezért meg kell határozni a változat a rendszerhez, amely azt vizsgálja, az elfogadhatóság XML-üzenet. Ezzel azt mondta, mi jelöljük a rendszer accountSummary-1.0.xsd. hogy a jövőbeli verziói nem írja felül a jelenlegi.

Ezenkívül annak érdekében, hogy az üzenetek egyértelműen azonosítsák a sémájuk változatát, a verzió attribútum hozzá lett adva a fiókSummary eleméhez. Feltételezzük, hogy ezek a verziószámok M.N. ahol M a fő verziószám, és N a kiegészítő verziószám. Ennek eredményeképpen az általánosított fiók fenti kódját a következőképpen lehet újraírni:

2. lépés: Változó kezelt szókincsek elkülönítése

Mindazonáltal aligha lenne megengedni a kérelem átírását annak érdekében, hogy meg lehessen határozni a deviza kódok változását, különben a fejlődés merevségét jelezné. Mivel ezek a kódok kívülről vezéreltek, el kell különíteni őket: létrehozunk egy külön szótárrendszert számukra. A szótár sémája olyan séma, amely egy egyszerű típusú definíciót tartalmaz felsorolt ​​értékekkel és semmi mással. Az ilyen rendszer, amelyet iso3currency-1.0.xsd-nek neveznek. a következő megjelenésű lesz:

A kijelölési szabálynak megfelelően ezt a sémát accountSummary-1.1.xsd nevezzük. Ügyeljen arra, hogy a fő séma nem tartalmaz pénznemkódokat.

3. lépés: a kezelt szótárak felszabadítása

A fiókSummary-1.1.xsd nehézsége az, hogy közvetlenül importálja az iso3currency-1.0.xsd fájlt. Tehát, amikor megjelenik az ISO pénznemjegyzékrendszer új verziója, még mindig új verziót kell kiadnia az általánosított számla sémáról. Egy mechanizmusra van szükség a szótár sémájának verzióinak dekódolásához a fő séma változataitól. Egyszerű megoldás egy olyan szótár "múló" sémájának használata, amely nem rendelkezik verzióval:

Ezt a sémát iso3currency.xsd-nek nevezzük. hiányzó verziójellemző. A fő séma, a accountSummary-1.2.xsd új verziója kiadásra kerül a kötés nélküli sémák készítéséhez. - az egyetlen változat az 1.1 verziótól, hogy az elem megváltozott

hogy tartalmazza a pénznem szótárának nem-verzióját. Így vannak megszakadva az áramkörök. Ha az ISO szervezet megváltoztatja a pénznemkódok listáját, új valutarendszert ad ki, és az iso3currency.xsd javításra kerül. hogy importálja ezt az új valutarendszert. A fő séma változatlan marad, mivel az iso3currency.xsd-t tartalmaz, és független a pénznemek szótárának sémájától.

4. lépés: Alkalmazások védelme

A szótárrendszerek ilyen megszüntetése nem nehézségek nélkül történik. Először is, mivel a pénznemek szótárak rendszerének új verziói jelennek meg, a meglévő példányfájlok érvénytelenek, ha az ISO által törölt pénznem kódokat tartalmaznak. Bizonyos esetekben ez a helyzet elfogadhatatlan, de példánkra ez lehetséges. Ha a példányfájl egy olyan pénznemkódot jelöl, amely már nem létezik, semantikusan érvénytelenné válik; semmi sem akadályozza a szintaktikailag elfogadhatatlanságot. Ezután szintaktikai elfogadhatatlanságot használhat az ilyen példányok észlelésére és speciális feldolgozás céljából elküldésre, hogy az alapalkalmazás kódja érvényes pénznemkódokat lehessen kezelni. Azáltal, hogy megszünteti a fő alkalmazásokból származó hibák feldolgozását, lerövidítheti a fő alkalmazás kódját, és egyszerűsítheti annak karbantartását.

Másodszor, tekintettel arra, hogy a pénznem kódok bármikor módosíthatók, biztosítani kell a pénznem-szótárakban használt deviza kódok és az alkalmazások által ismert deviza kódok közötti szinkronizálást. Ez a probléma két módon megoldható. Az első esetben az alkalmazások a szótár sémáját pénznemkódok forrásaként használhatják. Ha a szótár sémáját XML-fájlként nézed, a gyors SAX elemző mindössze annyit tesz, hogy kihúzza az elemeket . amely elfogadható értékeket tartalmaz. A második megközelítésben a pénznem kódokat egy központi relációs adatbázis tárolja. Ezután az alkalmazások közvetlenül elérhetik a táblázatot, és a szótár séma dinamikusan generálható ugyanabból a táblából. Az ismertetett módszerek bármelyike ​​lehetővé teszi az alkalmazások megengedett értékeinek szinkronizálását.

Végezetül, harmadszor, az ilyen ilyen szótárak használata csak akkor megengedett, ha az általuk bevezetett változtatások valamelyik felsorolt ​​mennyiség hozzáadásával vagy törlésével csökkenthetők.

A szótárak sémájának szerkezete semmilyen körülmények között sem változhat. Ha egy egyszerű vagy összetett típus vagy elem új definícióját hozzáadtuk a szótár sémájához, ez megváltoztathatja az alapul szolgáló séma példányának érvényesítését, és az alapul szolgáló alkalmazást hibás működéshez vezetheti. Ezért szükséges, hogy a szótárrendszer "érvényességének ellenőrzése" legyen biztos abban, hogy csak egy egyszerű típusú, számozott értékkel rendelkező definíciót tartalmaz. Ezt a helyzetet Will Provost írta le cikkében: "Metaschema használata".

Ahhoz, hogy a Windows, hogy ellenőrizze az érvényes szótárban rendszer e program keretében Schematron, akkor használja az ingyenes érvényesítő származó Topologi (ingyenes érvényesítő re Topologi). Más rendszereken lásd az eszközök listáját, a Handbook Schematron erőforrás (Schematron Resource Directory). További információ a Schematron megtalálható a cikk Chimezi Ogbuji (Chimezie Ogbuji) „érvényesítés Schematron” ( „Ellenőrzés XML Schematron”).

A Schematron utasításai olyan kifejezésekkel fejezhetők ki, amelyek értékének igaznak kell lennie. Ha értékük hamis. egy Schematron érvényesítési hiba keletkezik. A Schematron sémájának áttekintése során érdemes megemlíteni a következőket:

Jegyezze meg a szabályt a séma kontextusában. Tartalmazza az elemre vonatkozó állításokat a szótárrendszerben. Az első utasítás azt ellenőrzi, hogy az egyetlen dolog, amit a séma tartalmaz, a definíciók . A második állítás szerint csak egy definíció van .

A simpleType kontextus szabálya kimondja, hogy először, léteznie kell egy név-attribútumnak, és másodszor, tartalmaznia kell és tartalmazhat . de nincs más elem.

A kontextuskorlátozásra vonatkozó szabály azt állítja, hogy > egy vagy több felsorolt ​​értéket kell tartalmaznia.

A kontextusszámlálás szabálya szerint a felsorolt ​​értékeknek egyedinek kell lenniük. Ennek teszteléséhez használja a Schematron kulcsot (az XSLT kulcsnak megfelelő). A kulcskifejezés ('enumerationsByValue', @value) visszaküldi az elemek listáját ugyanolyan értékkel, mint az elfogadhatóságra ellenőrzött elem. Ha ezek az értékek egyediek, akkor csak egy elem fog megjelenni ebben a listában . az érvényességi ellenőrzést.

következtetés

Illékony kezelt szótárak (felsorolások) elhelyezése a saját szótárakban javíthatja a W3C XML sémák kezelhetőségét. Ez a cikk azt vizsgálta, hogyan lehet azonosítani az illékony kezelt szótárakat, hogyan kell elválasztani őket a fő sémától, hogyan kell kiadni a verziókat és hogyan ellenőrizni a szótár sémájának érvényességét. Természetesen az abszolút recept - ha egy kezelt szótárnak saját rendszere van - nem az. Ezért az ebben a cikkben megadott ajánlások alkalmazása mindig a józan észre és a problématerület ismeretére támaszkodik.

A cikkben ismertetett példákkal ellátott fájl letölthető ZIP-archívumként (9 KB).

Kapcsolódó cikkek