Прискорення засвоєння XML-словників
Apr 30 2013
Роджер Л. Костелло
Унікальній фахівец, знаний у всьому світі
що за останні 20 років створив численні навчальні посібники та
статті про сімейство технологій XML
Прискорення засвоєння XML-словників
Хочете прискорити прийняття вашої лексики XML? Один із способів – мати горилу на 800 фунтів, щоб змусити її використовувати її. Але це незабаром спричинить обурення та заколот. Кращий спосіб – створити щось, що люди дійсно захочуть використовувати, і не вимагає від них великих вкладень у час чи гроші, і дозволяє їм негайно почати взаємодіяти. Ось як:
- Створюючи свій XML-словник, вкажіть не тільки значення розмітки, але і її поведінку в додатках, які її обробляють.
- Вкажіть правила відповідності.
- Створіть тестовий набір.
- Створіть додаток, який реалізує поведінку.
- Обґрунтуйте програму щодо тестового набору.
- Зробити програму доступною для всього світу.
В ідеалі буде створено кілька реалізацій програми (кожна, звичайно, однакова поведінка!). Таким чином користувачі можуть вибрати програму на основі її продуктивності чи розміру чи мови програмування, в якій вона була реалізована.
Це воно! Зробіть це, і ваш словник XML може бути швидко прийнятий.
Приклад : Розглянемо словник XSLT. Специфікація XSLT визначає не тільки значення кожного елемента та атрибута, а й їх поведінку. Специфікація XSLT містить правила відповідності. Існує тестовий набір XSLT. Було створено додаток, який називається процесором XSLT, який реалізує поведінку, визначену в специфікації XSLT. Фактично було створено кілька реалізацій програми: Xalan, Saxon, Sableton та ін.
Дозвольте трохи детальніше зупинитися на тому, що я маю на увазі під «уточненням поведінки». Розглянемо ще раз XSLT. Специфікація XSLT говорить, що елемент <xsl: for-every> ідентифікує набір вузлів. Це сенс. Він також говорить, що сумісна програма повинна повторювати кожен вузол, ідентифікований атрибутом select (для кожного елемента є атрибут select) та виконувати елементи в межах <xsl: for-every>. Це поведінка. Таким чином, специфікація XSLT визначає, як програма повинна вести себе на елементі <xsl: for-every>. Діто для всієї лексики XSLT.
Специфікація XML-схеми робить хорошу роботу із визначення поведінки валідаторів XML-схеми. Наприклад, він визначає, що для оголошення елемента в XML-схемі валідатор повинен перевірити, чи документ екземпляра XML містить правильну кількість входів елемента і чи вміст його має правильний тип. Таким чином, він визначає, як валідатор повинен поводитись у словнику XML Schema. Отже, “вказати поведінку” означає описати “для цього елемента (або атрибута) в словнику, додаток повинен робити це, це, і це”.
Помилка, яку роблять люди під час створення словника XML, полягає в тому, що вони не вказують його поведінку. Вони залишають це “світу”, щоб зрозуміти, якою має бути поведінка. Класичний приклад цього – HTML. Розробники браузерів повинні були вирішити, якою має бути поведінка. У них були дуже різні ідеї щодо правильної поведінки. Наслідком цього було те, що IE, Firefox та інші браузери поводилися по-різному. Минуло 10 років, перш ніж вони нарешті сходилися на загальному розумінні поведінки. Якби специфікація HTML констатувала поведінку, надала правила відповідності та тестовий набір, тоді ми мали б ідентичні веб-переглядачі 10 років тому.
Одне, що потрібно враховувати, визначаючи поведінку, це таке: чи буде ваш словник XML подаватися в додаток як один XML-документ або як два XML-документи? (Або більше?) Візьмемо кілька прикладів, щоб побачити, що я маю на увазі:
- Програми веб-переглядачів обробляють один документ (HTML-документ)
- Валідатори схеми XML обробляють два документи (документ XML-схеми та документ XML)
- Процесори XSLT обробляють два документи (XSLT документ і XML документ)
У цих прикладах програми: браузер, валідатор схеми XML і процесор XSLT. Ці програми обробляють словник XML. Залежно від словника XML, додатку може знадобитися один вхідний документ або два вхідні документи (або більше).
Сумісність даних
Я часто чув, як вона говорила: “Для досягнення сумісності даних кожна програма повинна інтерпретувати / розуміти словник XML однаково”.
Який кращий спосіб забезпечити те саме тлумачення / розуміння, ніж використовувати той самий додаток!
Використовуючи той самий додаток, ми можемо мати ідеальну сумісність даних. ПРИМІТКА. Коли я кажу “те саме додаток”, я маю на увазі набір реалізацій. Таким чином, Xalan, Saxon і Sabletron – це все те саме додаток – всі вони є процесорами XSLT. Використання одного і того ж додатку не означає, наприклад, що всі використовують Xalan. Одна людина може використовувати Xalan, інша використовує Saxon, а інша Sabletron. Нічого страшного; всі вони мають однакову поведінку; всі вони дотримуються правил відповідності XSLT; всі вони проходять набір тестів XSLT.
Ось приклад, щоб проілюструвати, як досягається взаємодію даних завдяки спільному використанню одного і того ж додатка.
Приклад : Розглянемо XSLT. Я можу створити документ XSLT і запустити його на своєму XSLT процесорі. Я можу надіслати вам документ XSLT, і ви запустите його на своєму XSLT-процесорі. Ми отримуємо таку саму поведінку. Ми прекрасно погоджуємося, що означає елемент <xsl: for-every> та як він повинен вести себе. Діто для всіх інших елементів та атрибутів у словнику XSLT. Ми успішно взаємодіяли. Що це дозволило? Відповідь: Що дозволило інтероперабельності, це той факт, що ми використовуємо один і той же додаток. (Знову ж таки, я наголошую, що це не означає, що ми використовуємо ту саму реалізацію програми; ви можете використовувати Xalan і я, можливо, я використовую Saxon; це нормально; вони обидва процесора XSLT.)
Я можу створити другий документ XSLT і надіслати його вам. Знову ми маємо ідеальну сумісність. І третій документ XSLT. І так далі. Додаток процесора XSLT сприяє створенню, обміну та виконанню безперервних різних перетворень XSLT з ідеальним розумінням / взаємодією.
Резюме
Ось основні моменти:
- Створюючи словник XML, вкажіть поведінку словника XML. Вкажіть вимоги відповідності. Створіть тестовий набір. Реалізуйте відповідні програми, кожне з однаковою поведінкою (реалізації можуть відрізнятися за розміром, продуктивністю, мовою програмування тощо). Усі користуються реалізаціями.
- Взаємодія даних не досягається шляхом спільного розуміння словника XML. Інтероперабельність даних досягається завдяки спільному використанню програми XML-словника.
- Створення словника XML без уточнення його поведінки – погана ідея. Це рецепт уповільненої сумісності даних у кращому випадку, невдалої взаємодії даних у гіршому випадку.