XML jest językiem bardzo dobrym do tworzenia własnych języków, czyli aplikacji XML. Aplikacją XML nazywamy inny język oparty na XML, który jest jego podzbiorem. Oznacza to, że każdy dokument napisany według aplikacji XML jest prawidłowym dokumentem XML i może być przetwarzany za pomocą zwykłych parserów XML i tak najczęściej jest - wystarczy dodać informacje o dozwolonych elementach. Realizuje się to poprzez dołączenie schematu, najszerzej implementowanymi technologiami są: DTD - język deklaracji typów dokumentów SGML (więc nie tylko XML) oraz XML Schema - język powstały do opisu dokumentów XML, który sam jest aplikacją XML! Parser przetwarzający taki dokument zasięga informacji od schematu. Jeżeli napotkany zostanie jakikolwiek błąd, powinien przerwać wykonywanie.

Dla dokumentów XHTML, SVG i podobnych, bardzo powszechnych języków, nie wstawia się schematu (podobnie jak dla obecnego HTML). Jest to spowodowane tym, że większość witryn internetowych odsyłałaby do serwerów W3C, które nie byłyby w stanie przejąć takiego ruchu (codziennie z serwerami W3C łączyłyby się miliony urządzeń!). Po deklaracji odpowiedniej przestrzeni nazw oprogramowanie wyszukuje wbudowane schematy i sprawdza dokument pod ich względem. Nie ma co się martwić o aktualność - większość przeglądarek internetowych jest aktualizowanych co kilka tygodni, więc wszelkie zmiany są bardzo szybko wdrażane.

Popularne aplikacje XML

edytuj

Jest to przeniesiony na grunt XML język HTML. Funkcjonalnie nie różni się niczym od wersji nieopartej na XML. Sprawdzany jest jednak przez parser XML, więc obowiązują

ograniczenia składniowe względem zwykłego HTML. Np. nie są dozwolone atrybuty logiczne czy zapis atrybutów bez apostrofów lub cudzysłowów.

Warto zwrócić uwagę na to, że niektóre instrukcje XML są równoważne znacznikom HTML. Na przykład prolog może zastąpić znacznik meta z atrybutem charset lub http-equiv (albo oba rozwiązania może zastąpić wysłanie odpowiednich nagłówków z serwera, czy nawet BOM albo brak jakiejkolwiek informacji oznaczającej UTF-8). Wstawianie arkuszy stylów za pomocą znacznika link z atrybutem href może zastąpić instrukcja stylesheet.

<?xml version="1.0" encoding="utf-8" ?> <!-- "encoding" może zastąpić inne metody -->
<?xml-stylesheet href="style.css" type="text/css" ?> <!-- ta instrukcja przetwarzania może zastąpić znacznik <link href="..."/> -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
    ...
</html>

Scallable Vector Graphic - format grafiki wektorowej. Dzięki temu, że jest aplikacją XML, można tworzyć również animacje oraz całkowicie interaktywne aplety! To wszystko dzięki możliwości zastosowania arkuszy stylów np. CSS oraz skryptów. Działa to również w przeglądarkach internetowych, dzięki czemu format zyskał na popularności.

 <svg xmlns="http://www.w3.org/2000/svg" version="1.1"
    viewBox="0 0 100 100" preserveAspectRatio="xMidYMid slice"
    style="width:100%; height:100%; position:absolute; top:0; left:0; z-index:-1;">
    <linearGradient id="gradient">
      <stop class="begin" offset="0%"/>
      <stop class="end" offset="100%"/>
    </linearGradient>
    <rect x="0" y="0" width="100" height="100" style="fill:url(#gradient)" />
    <circle cx="50" cy="50" r="30" style="fill:url(#gradient)" />
  </svg>

[1]

To jest również aplikacja XML. Pozwala budować aplikacje zgodne z Windows Presentation Foundation i Universal Windows Flatform w technologii .NET. Jest tym dla systemu Windows, czym HTML jest dla przeglądarki - pozwala budować widok strony w znacznikach, a logika aplikacji oraz interakcja z użytkownikiem opiera się na języku takim jak C#.

Podobnie jest wykorzystywany język XUL w produktach Mozilli.

<Page 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="ExampleNamespace.ExamplePage">
  <Button Click="Button_Click" >Click Me!</Button>
</Page>

[2]

Przypisy

edytuj
  1. Niniejszy kod źródłowy jest fragmentem z kodu źródłowego MDN: https://developer.mozilla.org/pl/docs/SVG_w_XHTML_-_Wprowadzenie
  2. Niniejszy kod źródłowy pochodzi ze strony Microsoft Developer Network: https://msdn.microsoft.com/en-us/library/ms752059.aspx