Odpowiedni dokument XSL transformujący dokument XML przedstawia wydruk poniżej. Dokument XSL składa się z dwóch szablonów. Pierwszy szablon
dopasowywany jest do korzenia / dokumentu XML, natomiast drugi szablon dopasowywany jest do węzła student. Po uruchomieniu przetwarzania
dokumentu XML przez procesor XSLT dopasowany jest korzeń dokumentu do pierwszego wzorca, którego zawartość przekierowana jest na zbiór wynikowy. W trakcie
przetwarzania szablonu procesor znajduje polecenie <xsl:apply-templates select="dane" />, które przerywa działanie pierwszego wzorca i następuje wyszukiwanie
węzłów dokumentu przy pomocy polecenia "xpath" zgodnie z definicją zawartą w atrybucie select, w tym przypadku węzła - elementu dane.
Procesor przeszukuje kolejne węzły potomne dla węzła dane dokumentu XML i dopasowuje węzły do istniejących szablonów w dokumencie XSL - w naszym przypadku
znajduje węzły osoba i realizuje drugi szablon. W ramach tego szablonu występuje polecenie <xsl:value-of select="węzeł" />, które pobiera
zawartość wezła i przekierowuje na strumień wyjściowy. Atrybut select występujący w poleceniu jest obowiązkowy. Po znalezieniu wszystkich węzłów spełniających reguły procesor XSLT wraca od realizacji
przerwanego szablonu.
Transformację dokumentu XML do dokumentu wynikowego można wykonać z wykorzystaniem
programów xsltproc [15] lub xmlstarlet [16] dostępnych na serwerze "pascal".
Składnię odpowiednich poleceń przedstawiono poniżej.
Dokument XML można również przetworzyć z wykorzystaniem styli XSL przez przeglądarkę, które posiada wbudowany procesor XSLT. Wymagany
jest wtedy odpowiedni wpis w dokumencie XML informujący przeglądarkę o lokalizacji arkuszy styli XSL.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="osoby.xsl"?>
<!-- dalsza część dokumentu XML -->
W ramach funkcjonalności procesor XSLT umożliwia wykorzystanie funkcji sterujących i warunkowych, tworzenie definicji funkcji własnych
czy realizowanie sortowania danych. Przykładowy kod XSL realizujący sortowanie danych przedstawia poniższy szablon umożliwiający posortowanie
osób po nazwisku. Polecenie <xsl:for-each select="węzeł" /> tworzy iterator wyszukujący węzły znajdujące się w atrybucie select.
Polecenie <xsl:sort select="węzeł" /> posortuje węzły wyszukiwane przez iterator po zawartości węzła znajdującego się w atrybucie
select.
Do realizacji tego zadania zostanie wykorzystany dokument XSL (dok1.xsl) zawierający dwa szablony, pierwszy zostanie dopasowny do korzenia dokumentu XML, drugi natomiast będzie
odczytywał zawartość węzłów student. Przetworzenie arkusza XSL przez procesor XSLT jest zgodne z wcześniej opisanym przypadkiem.
W wyniku transformacji XSLT zostanie utworzony dokument HTML. Zawartość dokumentu HTML przedstawia dokument dok1.html.
Do realizacji tego zadania zostanie wykorzystany dokument XSL (dok2.xsl) zawierający dwa szablony, pierwszy zostanie dopasowny do korzenia dokumentu XML, drugi natomiast będzie
szablonem nazwanym, który będzie odczytywał zawartość węzłów student. Tak jak poprzednio wzorzec pierwszy jest dopasowany do korzenia
dokumentu XML. W ramach szablonu wykorzystano wcześniej omówioną funkcjonalność iteratora i polecenia sortującego (polecenia <xsl:for-each > i <xsl:sort />).
Po znalezieniu odpowiednich węzłów następuje wywołanie szablonu nazwanego <xsl:call-template name="nazwa" />, gdzie "nazwa"
jest nazwą szablonu. W ramach szablonu zostanie pobrana zawartość podelementów wybranego węzła.
Wygenerowany dokument HTML przedstawia plik dok2.html.
Ćwiczenie 3 - posortowana lista studentów po roku studiów, nazwisku i imieniu
Do realizacji tego zadania zostanie wykorzystany dokument XSL (dok3.xsl) zawierający dwa szablony, pierwszy zostanie dopasowny do korzenia dokumentu XML, drugi natomiast będzie
szablonem nazwanym, który będzie odczytywał zawartość węzłów student. Konstrukcja szablonów jest kopią ćwiczenia drugiego.
Do sortowania studentów wykorzystamy jednak trzy polecenia <xsl:sort /> w żądanej kolejności sortowania. W ramach
polecenia <xsl:sort /> umieszczono dodatkowy atrybut data-type, który dla sortowanych wartości numerycznych
przyjmuje wartość "number" a dla wartości tekstowych "text". Zawartość dokumentu HTML przedstawia dokument dok3.html.
Ćwiczenie 4 - lista studentów na poszczególnych kierunkach
Do realiacji tego zadania zostanie wykorzystany dokument XSL (dok4.xsl) zawierajacy trzy szablony. Pierwszy szablon dopasowuje korzeń dokumentu XML, drugi dopasowuje kolejne wydziały,
natomiast trzeci dopasowuje węzły student. W wyniku transformacji XSLT zostanie utworzony dokument HTML przedstawiony w dokumencie dok4.html
Ćwiczenie 5 - posortowana lista studentów na poszczególnych kierunkach
Do realizacji tego zadania zostanie wykorzystany dokument XSL (dok5.xsl) zawierajacy trzy szablony. Pierwszy szablon dopasowuje
korzeń dokumentu XML, drugi dopasowuje kolejne wydziały, natomiast trzeci szablon nazwany pobiera zawartość węzła student.
Kolejność wydziałów reprezentowana w dokumencie końcowym jest narzucona w szablonie drugim, gdzie w wyrażeniu ścieżkowym polecenia XPath,
podany został predykat wybierający żądany wydział. Utworzony dokument HTML przedstawiono w dokumencie dok5.html
Polecenie formatujące wynikowy dokument. Dostępne atrybuty:
method - definiuje format dokumnetu wejściowego, dostępne wartości: {xml, text, html}
version - wymagany w przypadku gdy atrybut method = "html" lub "xml"
encoding - typ kodowania dokumentu wyjściowego
omit-xml-declaration -
doctype-public - ustawia wartość atrybutu PUBLIC w deklaracji DOCTYPE
doctype-system - ustawia wartość atrybutu SYSTEM w deklaracji DOCTYPE
<xsl:template match="" >
Najważnieszy element w technologii XSLT. Jest to szablon, który zostanie wykorzystany przez procesor
po dopasowaniu wzorca znajdującego się w atrybucie "match" [17] zgodnego z językiem XPath do węzłów w dokumencie
wejściowym. Szablon zostanie przesłany do dokumentu wyjściowego.
<xsl:apply-templates />
Zadania realizowane przez polecenie:
element apply-templates powoduje przerwanie bieżącego procesu przetwarzania w szablonie
i wymuszenie na procesorze XSLT przejścia do potomków bieżącego wierzchołka;
procesor znajduje inny szablon, który służy do przetwarzania wierzchołków potomnych;
po przetworzeniu wezwanego szablonu XSLT powraca do macierzystego szablonu;
umożliwia to działanie rekurencyjne;
dostępny opcjonalny atrybut select umożliwia wskazanie wezłów.
<xsl:value-of select="" />
Zwraca zawartość węzła określonego przez XPath zawarte w atrybucie select.
<xsl:for-each select >
Po napotkaniu tego polecenia procesor XSLT przetwarza rekurencyjnie wszystkie węzły odpowiadające
wzorcowi zawartemu w atrybucie select.
<xsl:sort select="" />
Polecenie umożliwia sortowanie węzłów wskazanych w atrybucie select. Reguły sortowania
ustawiają dostępne atrybuty polecenia.
order - porządek sortowania, dostępne wartości: {ascending, descending};
lang - język, w którym następuje sortowanie;
data-type - określa czy sortujemy liczby czy litery, dostępne wartości: {text, number};
case-order - określa priorytet wielkości liter, dostępne wartości: {upper-first, lower-first}.
Grafika SVG w języku HTML5
Trójkąt i okrąg w grafice SVG, pliki "dok6_1.html" i "dok6_1.css".