This is the translation. The original web-page (oryginalna strona): http://xfront.com/accelerating-adoption-of-XML-vocabularies/
Roger L. Costello
Chcesz przyspieszyć przyswojenie swojego słownictwa XML? Jednym ze sposobów jest zmuszenie wszystkich do używania 800-funtowego goryla. Ale to wkrótce doprowadzi do urazy i buntu. Lepszym sposobem jest stworzenie czegoś, co ludzie będą naprawdę chcieli używać i nie wymaga od nich dużej inwestycji czasowej ani pieniędzy i pozwala im natychmiast rozpocząć współpracę. Oto jak:
- Tworząc słownik XML, określ nie tylko znaczenie znacznika, ale także jego zachowanie w aplikacjach, które go przetwarzają.
- Określ zasady zgodności.
- Utwórz zestaw testów.
- Utwórz aplikację, która implementuje to zachowanie.
- Sprawdź poprawność aplikacji w zestawie testów.
- Udostępnij aplikację całemu światu.
W idealnym przypadku powstanie kilka implementacji aplikacji (oczywiście każda z tym samym zachowaniem!). W ten sposób użytkownicy mogą wybrać implementację na podstawie jej wydajności lub rozmiaru lub języka programowania, w którym została zaimplementowana.
Otóż to! Zrób to, a Twoje słownictwo XML zostanie szybko zaadaptowane.
Przykład: weźmy pod uwagę słownictwo XSLT. Specyfikacja XSLT określa nie tylko znaczenie każdego elementu i atrybutu, ale także ich zachowanie. Specyfikacja XSLT zawiera reguły zgodności. Istnieje zestaw testów XSLT. Utworzono aplikację – zwaną procesorem XSLT – która implementuje zachowanie określone w specyfikacji XSLT. W rzeczywistości powstało wiele implementacji aplikacji: Xalan, Saxon, Sableton i inne.
Pozwólcie, że omówię nieco więcej, co mam na myśli, mówiąc o „określaniu zachowania”. Rozważ ponownie XSLT. Specyfikacja XSLT mówi, że element <xsl:for-each> identyfikuje zbiór węzłów. To jest znaczenie. Mówi się również, że zgodna aplikacja musi wykonać iterację po każdym węźle określonym przez atrybut select (element for-each ma atrybut select) i wykonać elementy w ramach <xsl:for-each>. To jest zachowanie. W związku z tym specyfikacja XSLT określa, jak aplikacja musi zachowywać się w elemencie <xsl:for-each>. To samo dotyczy całego słownictwa XSLT.
Specyfikacja Schema XML dobrze radzi sobie z określaniem zachowania walidatorów Schema XML. Na przykład określa, że w przypadku deklaracji elementu w Schema XML walidator musi sprawdzić, czy dokument instancji XML zawiera poprawną liczbę wystąpień elementu i czy jego zawartość jest odpowiedniego typu. W ten sposób określa, jak walidator musi zachowywać się na słownictwie Schema XML. Zatem określenie „zachowanie” oznacza opisanie „tego elementu (lub atrybutu) w słowniku, aplikacja musi zrobić to, to i to”.
Błąd, który ludzie popełniają podczas tworzenia słownictwa XML, polega na tym, że nie określają jego zachowania. Zostawiają to „światu”, aby dowiedzieć się, jakie powinno być zachowanie. Klasycznym tego przykładem jest HTML. Twórcy przeglądarek musieli zdecydować, jakie powinno być zachowanie. Mieli bardzo różne poglądy na temat właściwego zachowania. Konsekwencją było to, że IE, Firefox i pozostałe przeglądarki zachowywały się inaczej. Minęło 10 lat, zanim w końcu osiągnęli wspólne rozumienie zachowania. Gdyby specyfikacja HTML określała zachowanie, zapewniała reguły zgodności i zestaw testów, to 10 lat temu mielibyśmy identycznie zachowujące się przeglądarki.
Jedną rzeczą, którą musisz wziąć pod uwagę przy określaniu zachowania, jest to: czy twoje słownictwo XML zostanie wprowadzone do aplikacji jako jeden dokument XML, czy jako dwa dokumenty XML? (Lub więcej?) Weźmy kilka przykładów, aby zobaczyć, co mam na myśli:
- Aplikacje przeglądarki przetwarzają jeden dokument (dokument HTML)
- Walidatory schematu XML przetwarzają dwa dokumenty (dokument schematu XML i dokument XML)
- Procesory XSLT przetwarzają dwa dokumenty (dokument XSLT i dokument XML)
Interoperacyjność danych
Często słyszałem, jak mówiono: „Aby osiągnąć interoperacyjność danych, każda aplikacja musi interpretować/rozumieć słownictwo XML w ten sam sposób”.
Czy jest lepszy sposób na zapewnienie takiej samej interpretacji/zrozumienia niż użycie tej samej aplikacji!
Korzystając z tej samej aplikacji, możemy mieć doskonałą interoperacyjność danych. UWAGA: Mówiąc „ta sama aplikacja” mam na myśli zestaw wdrożeń. Zatem Xalan, Saxon i Sabletron to ta sama aplikacja – wszystkie są procesorami XSLT. Korzystanie z tej samej aplikacji nie oznacza na przykład, że wszyscy używają Xalana. Jedna osoba może używać Xalan, inna Saxon, a inna Sabletron. W porządku; wszystkie zachowują się tak samo; wszystkie przestrzegają zasad zgodności XSLT; wszystkie pomyślnie przeszły zestaw testów XSLT.
Oto przykład ilustrujący, w jaki sposób osiąga się współdziałanie danych poprzez współdzielenie tej samej aplikacji.
Przykład: rozważmy XSLT. Mogę utworzyć dokument XSLT i uruchomić go na moim procesorze XSLT. Mogę wysłać Ci dokument XSLT, a Ty uruchomisz go na swoim procesorze XSLT. Otrzymujemy to samo zachowanie. Zgadzamy się doskonale co do tego, co oznacza element <xsl:for-each> i jak powinien się zachowywać. To samo dotyczy wszystkich innych elementów i atrybutów w słowniku XSLT. Z powodzeniem współpracowaliśmy. Co to umożliwiło? Odpowiedź: Tym, co umożliwiło interoperacyjność, jest fakt, że używamy tej samej aplikacji. (Ponownie muszę podkreślić, że nie oznacza to, że używamy tej samej implementacji aplikacji; być może używasz Xalana, a ja używamy Saxona; w porządku; oba są procesorami XSLT).
Mogę utworzyć drugi dokument XSLT i wysłać go do Ciebie. Ponownie mamy doskonałą interoperacyjność. I trzeci dokument XSLT. I tak dalej. Aplikacja procesora XSLT umożliwia tworzenie, wymianę i wykonywanie niekończących się różnych transformacji XSLT z doskonałym zrozumieniem/interoperacyjnością.
Podsumować
Oto główne punkty:
- Podczas tworzenia słownika XML określ zachowanie słownika XML. Określ wymagania dotyczące zgodności. Utwórz zestaw testów. Implementuj zgodne aplikacje, z których każda zachowuje się tak samo (implementacje mogą różnić się rozmiarem, wydajnością, językiem programowania itp.). Z wdrożeń korzystają wszyscy.
- Interoperacyjność danych nie jest osiągana poprzez wspólne zrozumienie słownictwa XML. Interoperacyjność danych osiąga się poprzez wspólne użycie aplikacji słownika XML.
- Tworzenie słownictwa XML bez określenia jego zachowania jest złym pomysłem. W najlepszym przypadku jest to recepta na opóźnioną interoperacyjność danych, w najgorszym nieudaną interoperacyjność danych.