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
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
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 simpleType kontextus szabálya kimondja, hogy először,
A kontextuskorlátozásra vonatkozó szabály azt állítja, hogy
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
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).