Schemat punktu rozszerzenia

Rozszerzenia to podstawowy mechanizm dodawania nowych funkcji do platformy za pomocą modułów dodatkowych. Rozszerzeń nie można jednak tworzyć dowolnie.  Są one deklarowane przy użyciu przejrzystej specyfikacji definiowanej przez punkt rozszerzenia.

Każde rozszerzenie musi być zgodne ze specyfikacją punktu rozszerzenia, który ma być rozszerzany.  Każdy punkt rozszerzenia definiuje atrybuty i oczekiwane wartości, które muszą być zadeklarowane przez rozszerzenie.  Informacje te są przechowywane w rejestrze modułów dodatkowych platformy.  Dostawcy punktów rozszerzeń wyszukują te informacje w rejestrze, dlatego ważne jest, aby tworzony moduł dodatkowy udostępniał oczekiwane dane.

W swej najbardziej podstawowej formie deklaracja punktu rozszerzenia jest bardzo prosta.  Definiuje ona identyfikator i nazwę punktu rozszerzenia.  Wszelkie inne informacje oczekiwane przez punkt rozszerzenia są charakterystyczne dla tego punktu rozszerzenia i udokumentowane gdzie indziej.  (Definicje punktów rozszerzeń platformy można znaleźć na stronie Informacje dodatkowe o punktach rozszerzeń platformy).

Dokumentacja ta jest przydatna, ale nie oferuje żadnej programistycznej pomocy w sprawdzaniu poprawności specyfikacji rozszerzenia. Z tego powodu w środowisku PDE wprowadzono schematy punktów rozszerzeń, które opisują punkty rozszerzeń w formacie odpowiednim do automatycznego przetwarzania.

Schemat punktu rozszerzenia musi być poprawnym schematem XML, zgodnie z definicją zawartą w specyfikacji W3C. Jednak pełna specyfikacja schematu XML jest bardzo złożona i w większej części nieistotna dla tego konkretnego zastosowania. Dlatego w środowisku PDE wykorzystano tylko podzbiór cech schematu XML.  Każdy schemat punktu rozszerzenia jest poprawnym schematem XML, ale w środowisku PDE nie są wykorzystywane wszystkie jego możliwości.

Korzyści płynące ze stosowania schematów punktów rozszerzeń

Utworzenie opisu punktu rozszerzenia za pomocą przyjętego w środowisku PDE schematu XML niesie wiele korzyści:

  1. Gramatyka punktu rozszerzenia pozwala na formalne wyrażenie elementów, atrybutów i typów. Informacje te mogą być używane przez odpowiednie narzędzia, które sprawdzają poprawność rozszerzeń oraz oferują pomoc podczas tworzenia rozszerzeń.
  2. Schemat XML udostępnia możliwości tworzenia komentarzy dokumentujących, podobnych do dokumentacji Javadoc kodu źródłowego Java. Mechanizm ten wiąże krótkie opisy tekstowe elementów i atrybutów z deklaracjami tych elementów i atrybutów. Dzięki temu łatwiej jest zachować aktualność dokumentacji, ponieważ usunięcie atrybutu powoduje także usunięcie odpowiedniego fragmentu dokumentacji z opisem tego atrybutu.  Nie ma zatem potrzeby aktualizowania dokumentu referencyjnego.
  3. Można generować dokumentację referencyjną.  Środowisko PDE udostępnia narzędzie służące do śledzenia zmian w schematach punktów rozszerzeń i natychmiastowego aktualizowania dokumentacji referencyjnej.
  4. Można zdefiniować dodatkowe metadane dotyczące punktu rozszerzenia, z których będą mogły korzystać narzędzia przetwarzające schemat.  Mechanizm ten jest używany w środowisku PDE do wprowadzania dodatkowych informacji o elementach i atrybutach. Jeśli na przykład dany atrybut jest oznaczony jako "Java", środowisko PDE może zaoferować pomoc podczas ustawiania wartości tego atrybutu, współpracując z funkcjami platformy Java.

Ograniczenia obsługi schematów XML w środowisku PDE

W środowisku PDE używany jest mały podzbiór elementów schematu XML.  Zastosowanie pełnego schematu XML w tym konkretnym przypadku byłoby niepraktyczne. Podzbiór umożliwia odwzorowanie deklaracji DTD na schematy praktycznie w skali 1:1, pomijając przy tym ograniczenia deklaracji DTD. Poniżej wymieniono główne ograniczenia schematu punktu rozszerzenia w środowisku PDE:

  1. Dozwolone są tylko deklaracje elementów globalnych.
  2. Dozwolone są tylko deklaracje atrybutów lokalnych.  Nie można deklarować atrybutów globalnych.
  3. Obsługiwane są następujące kompozytory: wszystko, sekwencja, wybór i grupa.
  4. Brak obsługi typów globalnych.  Typy muszą być deklarowane i natychmiast używane.
  5. Atrybuty mogą być tylko typu string i boolean.
  6. Gdy atrybut jest typu string, obsługiwane jest tylko ograniczenie enumeration.

Schemat XML napisany z uwzględnieniem tych ograniczeń jest uderzająco podobny do równoważnej deklaracji DTD, która definiuje taką samą gramatykę. Przewaga schematu tkwi w adnotacjach (służących zarówno do celów dokumentacyjnych, jak i do deklaracji metadanych). Dodatkową zaletą jest to, że schemat XML jest także napisany w języku XML, co znacznie ułatwia jego przetwarzanie i czytanie.

Powyższa lista służy tylko do celów informacyjnych. Najczęściej schemat XML jest definiowany przy użyciu edytora schematów dostępnego w środowisku PDE, który automatycznie generuje poprawny plik.