ПредишенСледващото

При работа с XML, ориентирани данни често се изисква да работят "контролни речници", известен още като изброените ценности. Нека разгледаме следния пример на генерализирана банкова сметка:

В този документ има две контролиран речник. Първият - речник на валути, три характер валута код ISO-4217 ( "USD" - е щатския долар). Второ - това е правило на закръгляване (закръгляне) интерес: "нагоре" (нагоре), "надолу" (намаляване) и "най-близкия" (най-близо). В нашия пример, банката предпочита да закръгли проценти надолу.

Един от проблемите при проектирането на тази схема се крие във факта, че управлението на валута ISO код е извън нашата компетентност. Тези кодове могат да бъдат променяни по всяко време, и ако те са вградени в схемата, той ще трябва да се публикуват всеки път, когато организацията променя своите ISO кодове. И това може да бъде много скъпо. Това е особено вярно за бизнеса, където всяка промяна на схемата, без значение колко малък може да се окаже, може да се наложи да тествате вашата кандидатура, използвайте.

Тази статия описва как да се контролира с помощта на контролни речници W3C XML-схема (W3C XML Схемите), тъй като това е най-основни спецификации формат XML-базирани схеми за XML данни. Имайте предвид, че терминът "речник", ние имаме предвид списъци на стоки, изброени стойностите на атрибутите, което е различно от друг контекст, в който "речници" - набор от имена XML елемент.

Етап 1: монолитна верига

Преди да мисля за това, кои от контролни речници е извън нашия контрол, първото нещо да направите, е да се създаде схема за общи сметки с помощта на W3C XML-схемата. В тази статия, ние ще използваме подмножество на трисимволен ISO код на валутата. Съответният схемата ще бъде, както следва:

Обърнете внимание на две контролирания речник (превод): прости типове и iso3currency roundingDirection - дължина iso3currency е ясно определен до 3, за да се избегнат бъдещи неудобни правописни грешки при редактиране, когато трябва да се коригира списъка на валути.

Възможно е също да се отбележи, че стойността на допълнителен версия атрибут е настроен на "1.0". Въпросът е, че когато се работи с XML, ориентирани от данни съобщения, често е необходимо едновременно да поддържат по няколко версии на схема съобщение, тъй като, както изглежда, не е възможно едновременно да "асансьор" система, като се използва тази схема, до последна версия. Така, че е необходимо да се определи версията на схемата, по която тества за допустимостта на XML-съобщение. С това каза, ние означаваме нашата схема accountSummary-1.0.xsd. че бъдещите версии няма да замени сегашната.

В допълнение, за да се гарантира, че копия от съобщенията ясно идентифицирани своята версия на схемата за accountSummary елемент атрибут е бил добавен към версия. Предполага се, че номерата на версия се записват като M.N. където М - е основен номера на версията, както и N - допълнително. В резултат на това по-горе код за генерализирана сметка може да бъде пренаписана, както следва:

Етап 2: изолиране на летливи контролирани речници

Въпреки това, едва ли щеше да бъде разрешено да пренапише заявлението за разработване на промени в определени валутни кодове, в противен случай би означавало, развитие липса на гъвкавост. Тъй като тези кодове, се контролират от външната страна, те трябва да бъдат изолирани: ние ще създадем за тях отделна схема лексика. Шофиране речника - е верига, която съдържа само определението на един прост тип с изброените ценности и нищо друго. Тази схема, етикетирани iso3currency-1.0.xsd. ще бъде, както следва:

В съответствие с предназначението на правилото, схемата на име accountSummary-1.1.xsd. Имайте предвид липсата на валутни кодове в основната схема.

Етап 3: разгръщане на контролирани речници

Проблемът с accountSummary-1.1.xsd е, че той е директен вносител на iso3currency-1.0.xsd. Така че, когато все още се изисква нова версия на схема ISO валута лексика и се получава нова версия на схема на общи сметка. Необходим е механизъм отприщвайки версия на речника от версиите на веригата на основната схема. Простото решение - използвайте "преминаване" схема речник, който не разполага с освобождаване:

В тази схема, по-нататък iso3currency.xsd. липсва атрибут версия. За да завършите веригите разгръщане на нова версия на основния схема, accountSummary-1.2.xsd. - единствената разлика от версия 1.1 е, че елементът променена от

да се включат няма действие версия на схеми лексика валути. След избухването на схеми екзекутирани. Ако една организация се променя списъка с ISO код на валути, има нова схема на валута и коригираната iso3currency.xsd. че е внесъл тази нова схема на валута. Основната схема е непроменена, тъй като не съдържа iso3currency.xsd и не зависи от версията на речника конвертор верига.

Стъпка 4: кандидатстване за сигурност

Подобен взрив на схеми речници не е без затруднения. На първо място, до степен, че като няма да има нови версии на верига валута речници съществуващите файл копие направи невалиден, ако те съдържат валутните кодове, които са били изтрити по ISO. В някои случаи тази ситуация е неприемлива, но за нашия пример, че е възможно. Ако копие на файла се отнася до кода на валутата, която вече не съществува, той ще бъде семантично невалиден; тя е и нищо не пречи да е синтактично невалиден. След това можете да използвате синтаксиса недопустимостта да се открият такива копия и ги изпраща на специален режим на кода на ядрото заявление може да се справи с валидни валутни кодове. Премахване на обработката на грешки на основното приложение, е възможно да се намали основния код за кандидатстване и опростяване на неговата поддръжка.

На второ място, като се има предвид факта, че валутните кодове могат да бъдат променяни по всяко време, е необходимо да се осигури синхрон между кодовете на валутите в речник схема валути и валутни кодове, известни приложения. Този проблем може да бъде решен по два начина. В първия случай, приложението може да се възползва от схемата на речника като източник на валутни кодове. Ако говорим за лексика схемата като XML-файлове, бързо SAX-анализатора - това е всичко, което е необходимо, за да дръпне елементите . съдържащ допустимите стойности. При втория подход валутни кодове се съхраняват в централна релационна база данни. Тогава приложенията имат достъп до масата му директно и лексиката схема може да се генерира динамично от същата таблица. Всеки от горните методи осигурява синхрон определя допустимите стойности на приложения.

И накрая, на трето място, използването на такива схеми на речници е разрешено само ако промените, направени в тях, или за намаляване на добавянето на прехвърлената стойност или да го премахнете.

Структура речници вериги не трябва да се променят при никакви обстоятелства. Ако речника схема ще бъде добавен към новото определение на прости или сложни тип, или елемент, той може да промени резултатите потвърждават модел на основната верига и да причини неизправност на база прилагане. Така, че е необходимо ", за да провери допустимостта на" Речник на схемата, за да се уверите, че те съдържат само една проста дефиниция тип с изброените ценности. Това е ситуацията, описана от Уил ректор (Уил ректор) в статията си "Работа с метаописанията" ( "Работа с Metaschema").

В Windows, за да проверите за валиден схема речника по тази схема Schematron, можете да използвате безплатно валидатора от Topologi (безплатно валидатор от Topologi). За други платформи, вижте списъка на инструменти в ресурса Наръчник Schematron (Schematron Resource Directory). За повече информация относно Schematron може да се намери в статията Chimezi Ogbuji (Chimezie Ogbuji) "Валидиране използване Schematron" ( "Потвърждаване на XML с Schematron").

Твърденията в Schematron изразени от изрази, стойността на които трябва да бъдат верни. Ако стойността им е лъжа. генерира грешка валидиране за Schematron. При разглеждане на нашата Schematron схема е да се отбележи следното:

Обърнете внимание на правилото за контекста на схемата. Тя съдържа твърдения, които се прилагат към елемента в схемата на речника. Първото твърдение на контрол, единственото нещо, което се съдържа във веригата, това определение . Второто твърдение проверява, че има само една дефиниция .

Правило за контекст simpleType твърди, че, от една страна, в трябва да е името на атрибута, и второ, трябва да съдържа и могат да включват . но повече от всеки друг елемент.

Правилото за ограничаване на контекст се посочва, че > Трябва да съдържа една или повече от изброените стойности.

Правило за контекст изброяване твърди, че изброените ценности трябва да бъдат уникални. За да проверите това, използвайте Schematron ключ (еквивалент на ключовата XSLT). Изразяване ключ ( "enumerationsByValue", @value) връща списък с елементи със същата стойност като се проверява за елемент валидност. Ако тези стойности са уникални, а след това този списък е само един от елементите ще присъства . този, който се проверява за валидност.

заключение

Поставянето на летливи контролни речници (превод) в собствената си схема на речници, можете да увеличите на W3C XML боравене схеми. Тази статия е обсъдено как да се идентифицират летливи контролни речници, как да ги отдели от основната схема е да се развърже версия и как да се провери за речници валидност схема. Разбира се, абсолютната рецепта - когато контролирания речник трябва да има своя собствена схема - не. Поради това, прилагането на информацията, съдържаща се в тази статия препоръки, винаги разчитаме на здравия разум и познаване на проблемната област.

Файл с примерите в тази статия може да бъде изтеглена като ZIP-файл (9К).

Свързани статии

Подкрепете проекта - споделете линка, благодаря!