Patryk Czarnik
Utworzono: 2002.11.10
Zmodyfikowano: 2002.11.12
CSS level 2
XSL
XSLT
XPath
XHTML
HTML
XPath Visualizer
(zip, razem z przykładami) - wymaga Windows z biblioteką MsXML 3.0 (działa pod IE 6.0)
XML bez wizualizacji
(pokaż kod)
arkusz CSS
(pokaż kod)
XML z CSS
(pokaż kod)
arkusz XSLT -> XHTML
(pokaż kod)
XML z XSLT -> XHTML
(pokaż kod)
Dokumenty XML w ogólności nie zawierają informacji o tym, jak prezentować ich zawarość. Nie można też ustalić uniwersalnego sposobu interpretowania XML, gdyż np. w różnych dokumentach te same nazwy elementów znaczą co innego. Ogólne sposoby prezentowania XML są bardzo ubogie, np. w przeglądarkach internetowych wyświetla się kod XML (stary Netscape), zawartość tekstowa (Mozilla) lub struktura drzewiasta (Internet Explorer).
Wiele dokumentów XML zawiera jednak dane, które można prezentować w bardziej przyjemny sposób.
Pomysł arkuszy stylu polega na tym, aby umieścić informację o prezentacji poza dokumentem i to w taki sposób, żeby ta sama informacja (ten sam arkusz) była dobra dla całej klasy dokumentów. Na przykład możemy określić jeden styl dla prac magisterskich, inny dla artykułów, jeszcze inny dla... spisu pracowników firmy.
Ponadto dla określonej klasy dokumentów możemy zdefiniować wiele styli.
Cascading Style Sheets, rekomendacja W3C jest dość prostym sposobem zapisania informacji o prezentacji poszczególnych elementów dokumentu. Pozwala dużo powiedzieć o wyglądzie, szeroko stosowany przy HTML, jest (nie idealnie) zaimplementowany we wszystkich liczących się graficznych przeglądarkach internetowych.
CSS nie pozwala na zmianę kolejności elementów, ich duplikowanie. Po prostu kolejne elementy są wyświetlane w sposób określony w arkuszu.
Extensible Stylesheet Language, rekomendacja W3C określa inny sposób prezentacji dokumentów XML opraty o transformacje dokumentów.
Tym razem arkusz określa sposób zamiany dokumentu XML na inny dokument XML, dla którego określony jest już sposób prezentacji. Zgodnie z ideą standardu XSL wyjściowym powinien być dokument XSL Formatting Objects, ale w praktyce najczęściej dokonuje się tranformacji do XHTML.
XSL = XSLT (język transformacji) + FO (język prezentacji).
XSL Transformations, rekomendacja W3C to język (zastosowanie XML) służący do pisania arkuszy dokonujących transformacji XML -> XML. Procesor XSLT to aplikacja, która potrafi interpretować XSLT i mając dane wejściowy dokument XML i arkusz XSLT potrafi wygenerować wyjściowy dokument XML.
Arkusz (stylesheet) składa się z szablonów (templates). Każdy szablon opisuje jak zamieniać pewnien fragment dokuentu wejściowego na fragment dokumentu wyjściowego. Wykonanie tranformacji polega na wywołaniu szablonu pasującego do elementu głównego.
Treść szablonu jest wyrażeniem opisującym zawartość dokumentu wynikowego. Nie ma tutaj imperatywnych poleceń modyfikujących stan, wypisujących coś na wyjście itd., dlatego XSLT można uznać za język deklaratywny, w pewnych aspektach przypominający języki funkcyjne (konstrukcja let x=... in ..., co prawda trochę inny, ale "pattern-matching").
Wynikiem transformacji jest dokument XML. Standard określa trzy sposoby serializacji (zapisania jako tekstu) wynikowych dokumentów:
Zastosowania XSLT są znacznie szersze niż prezentacja XML.
To tyle ogólników o XSLT... Aby pisać arkusze trzeba poznać jeszcze język XPath.
XML Path Language, rekomendacja W3C to język wyrażeń pozwalający na zaadresowanie fragmentu dokumentu XML, odczytanie jego wartości oraz wiele innych rzeczy (arytmetyka liczb całkowitych i logiki, wbudowane użyteczne funkcje).
XPath definiuje drzewiasty model dokumentu XML, podobny do DOM, ale z pewnymi subtelnymi różnicami, m.in. w XPath w przezroczysty sposób są wklejane sekcje CDATA i wartości encji, atrybuty są dziećmi elementów. XPath, w odróżnieniu od DOM, nie stanowi interfejsu programistycznego dla dokumentu, wyrażenia XPath pozwalają jedynie odczytywać fragmenty dokumentu.
Najważniejszy rodzaj wyrażeń. Ich wynikiem jest wartość typu node set, służą do odczytywania (adresowania) fragmentów dokumentu. Podstawowa składnia:
krok/krok ...
krok:
oś::test-węzłów predykaty każdy predykat w nawiasach kwadratowych.
Można stosować różne skróty. Domyślną osią jest child, rozpoczęcie nazwy węzła od @ oznacza atrybut, * pasuje do każdej nazwy a // oznacza wszystkich potomków (nie tylko dzieci jak /).
Względna ścieżka XPath jest obliczana względem węzła bieżącego, można się też do niego odwołać w wyrażeniu za pomocą funkcji current(), w każdym miejscu w ścieżce XPath current() ma tą samą wartość.
Węzeł kontekstowy na samym początku obliczania wyrażenia jest równy węzłowi bieżącemu, a dalej w miarę przechodzenia kolejnych kroków ścieżki XPath zmienia się. W każdym miejscu można się do niego odwołać za pomocą kropki .
Przykład:
//section[current()/@id = 'S3'] - wszystkie elementy section, jeśli bieżący węzeł ma parametr id równy S3;
//section[./@id = 'S3'] - wszystkie elementy section, które mają parametr id równy S3;
Wykorzystać XPath Vizualizer.