CV

Прискорення засвоєння XML-словників

Apr 30 2013

Роджер Л. Костелло

 

Унікальній фахівец, знаний у всьому світі

що за останні 20 років створив численні навчальні посібники та

статті про сімейство технологій XML

Оригінальна стаття

Прискорення засвоєння XML-словників

Хочете прискорити прийняття вашої лексики XML? Один із способів – мати горилу на 800 фунтів, щоб змусити її використовувати її. Але це незабаром спричинить обурення та заколот. Кращий спосіб – створити щось, що люди дійсно захочуть використовувати, і не вимагає від них великих вкладень у час чи гроші, і дозволяє їм негайно почати взаємодіяти. Ось як:

  1. Створюючи свій XML-словник, вкажіть не тільки значення розмітки, але і її поведінку в додатках, які її обробляють.
  2. Вкажіть правила відповідності.
  3. Створіть тестовий набір.
  4. Створіть додаток, який реалізує поведінку.
  5. Обґрунтуйте програму щодо тестового набору.
  6. Зробити програму доступною для всього світу.

В ідеалі буде створено кілька реалізацій програми (кожна, звичайно, однакова поведінка!). Таким чином користувачі можуть вибрати програму на основі її продуктивності чи розміру чи мови програмування, в якій вона була реалізована.

Це воно! Зробіть це, і ваш словник 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 з ідеальним розумінням / взаємодією.

Резюме

Ось основні моменти:

  1. Створюючи словник XML, вкажіть поведінку словника XML. Вкажіть вимоги відповідності. Створіть тестовий набір. Реалізуйте відповідні програми, кожне з однаковою поведінкою (реалізації можуть відрізнятися за розміром, продуктивністю, мовою програмування тощо). Усі користуються реалізаціями.
  2. Взаємодія даних не досягається шляхом спільного розуміння словника XML. Інтероперабельність даних досягається завдяки спільному використанню програми XML-словника.
  3. Створення словника XML без уточнення його поведінки – погана ідея. Це рецепт уповільненої сумісності даних у кращому випадку, невдалої взаємодії даних у гіршому випадку.