Dokumenty XML (w ogólności) nie zawierają informacji o tym, jak prezentować ich zawartość. W różnych dokumentach te same nazwy elementów mogą znaczyć co innego, dlatego uniwersalny sposób prezentacji wszystkich dokumentów to co najwyżej wyświetlanie kodu XML lub drzewa dokumentu. Wiele dokumentów XML zawiera jednak dane, które można prezentować w bardziej specyficzny sposób.
Pomysł arkuszy stylu polega na tym, aby umieścić informacje o prezentacji poza dokumentem. Dzięki temu:
Rozdzielenie treści od jej prezentacji jest jednym z fundamentów „ideologii XMLowej”, zarządzania treścią, standardów promowanych przez organizację W3C.
Istnieje standardowy sposób na zapisanie w dokumencie XML informacji o arkuszu
stylu, którego należy użyć do jego wizualizacji. Służy do tego instrukcja przetwarzania
xml-stylesheet
umieszczona w początkowej części dokumentu (przed elementem głównym).
<?xml-stylesheet type="text/css" href="styl.css"?>
Jest to nawet wyspecyfikowane w odpowiedniej rekomendacji :).
Cascading Style Sheets jest dość prostym sposobem zapisania informacji o prezentacji poszczególnych elementów dokumentu. Pozwala dużo powiedzieć o wyglądzie, szeroko stosowany przy (X)HTML, jest (nie idealnie) zaimplementowany we wszystkich liczących się graficznych przeglądarkach internetowych.
Zalety CSS:
Wady i braki CSS:
Popełniłem błąd pisząc, że w CSS nie da się wypisać wartości atrybutu, przepraszam. Oto przykład, w którym wypisuje
się wartość atrybutu nazwa
elementu obiekt
, za każdym elementem obiekt
:
obiekt:after { content: attr(nazwa) }
Arkusz CSS składa się z wyrażeń, którymi mogą być m.in. reguły mówiące jak wyświetlać poszczególne elementy dokumentu.
Każda reguła składa się z selektora, na podstawie którego określane jest jakich elementów dotyczy dana reguła, i bloku deklaracji
postaci własność: wartość
, określających jak dany element wyświetlać.
W (X)HTML można też informację o stylu umieszczać bezpośrednio w dokumencie, w atrybucie style
elementu, którego styl ten dotyczy.
Selektory to wzorce określające elementy, których dotyczy reguła. Mają intuicyjną składnię i dość dużą siłę wyrazu, mniejszą jednak niż wzorce XPath występujące w XSLT.
Można określać elementy w oparciu o ich nazwy, zagnieżdżenie w dokumencie, wartości atrybutów.
W przypadku wizualizowania HTML specjalne znaczenie ma atrybut class
, w arkuszu można zdefiniować styl dla elementów podanej klasy.
Więcej o selektorach...
CSS pozwala na wielokrotne zdefiniowanie danej własności dla tego samego elementu, potencjalnie z różnymi wartościami.
O tym, jaka wartość zostanie przyjęta decydują precyzja selektora (najsilniejsze po ID, najsłabsze z *
) oraz kolejność wpisów (późniejsze nadpisują).
Jeśli dla danego elementu pewna własność stylu nie jest jawnie wyspecyfikowana, wówczas zazwyczaj jest przejmowana z nadelementu. Dopiero kiedy na ścieżce do elementu głównego nie ma jawnej definicji, przyjmowana jest wartość domyślna.
Więcej o ustalaniu obowiązującej wartości dla własności w rekomendacji.
Należy mieć świadomość, że dla elementów HTML wiele własności CSS jest już określonych. Dlatego mimo, że
dla body
określimy font-weight: normal
, nagłówek h1
i tak będzie pogrubiony.
Zgodnie z zaleceniami W3C przeglądarka / użytkownik przeglądarki definiuje swój własny domyślny styl dla HTML, a dopiero do niego aplikowane są style autora strony. W praktyce wyświetlanie poszczególnych elementów HTML bywa wbudowane w przeglądarkę.
W modelu wizualnym CSS każdemu elementowi dokumentu odpowiada blok. Zasadniczo dzielą się one na dwa rodzaje: "duże" bloki block i bloki poziomu tekstu inline block. Bloki są zagnieżdżone tak jak elementy w dokumencie. "Duże" bloki są wyświetlane jako prostokątne pudełka jeden pod drugim. Bloki typu inline podlegają normalnemu zawijaniu tekstu.
Domyślne rozmieszczenie bloków może zostać zmodyfikowane dzięki własnościom CSS wpływającym na pozycję i rozmiar.
Oto niektóre własności, za pomocą których można określać wygląd poszczególnych elementów:
Zapisz przyklad.xml i przyklad.css.
Używając odpowiednich selektorów CSS wyróżnij następujące elementy (jeśli się da):
Opcjonalna zabawa z formatowaniem na przykładach z wykładu.
Chociaż dokumenty XML zasadniczo niosą w sobie treść bez wizualizacji, istnieją jednak typy dokumentów niosące informacje o wizualizacji. Znanym przykładem jest XHTML.
Sposobem wizualizacji dowolnego dokumentu może więc być przekształcenie dokumentu źródłowego do dokumentu wynikowego, niosącego informacje o formatowaniu, a następnie prezentacja wynikowego dokumentu.
Połączenie idei przekształceń z ideą arkuszy stylu prowadzi do rozwiązania, w którym dla danej klasy dokumentów definiujemy arkusz – przekształcenie, który mówi w jaki sposób przekształcać dokumenty z tej klasy do dokumentów, które służą wizualizacji.
Powyższe idee zostały zrealizowane w standardzie W3C Extensible Stylesheet Language. Standard ten składa się z dwóch zasadniczych części:
W XSLT wykorzystywany jest standard XPath – język wyrażeń, w którym łatwo odwoływać się do fragmentów dokumentu XML. Z XSLT 2.0 i XPath 2.0 wiąże się jeszcze standard XQuery 1.0 – język zapytań nad dokumentami XML. Wszystkie te standardy będziemy poznawać na kolejnych zajęciach.
Zgodnie z ideą XSL należy pisać arkusze mówiące jak przekształcać dokumenty źródłowe do dokumentów XSL FO, które to będą następnie wyświetlane lub w inny sposób prezentowane. XSL-FO jest wykorzystywane w profesjonalnych zastosowaniach związanych z publikacją (książek, gazet itp.). Natomiast w zastosowaniach Webowych dla prezentacji częściej definiuje się przekształcenia do (X)HTML. XSLT stosuje się także do innych celów niż prezentacja.
Opcjonalna zabawa programem Apache FOP na przykładach z wykładu.
Należy pobrać zipa, rozpakować, nadać uprawnienia do wykonania skryptowi fop i uruchomić.
Hypertext Markup Language jest podstawowym językiem służącym do publikowania treści w Internecie. Najnowszą wersją jest HTML 4.01. Obecnie rozwijane jest nowe wcielenie HTML-a: XHTML. Ponadto rozpoczęto prace nad HTML 5.
HTML jest zastosowaniem SGML, dzięki temu możliwe są w nim pewne (niedopuszczalne w XML) skróty składniowe, jak np. pomijanie niektórych znaczników zamykających, a nawet otwierających. Ma to ułatwiać ręczną edycję dokumentów.
HTML zawiera bogaty zestaw elementów i atrybutów służących różnym celom. Wśród elementów występują zarówno
„semantyczne” – mówiące jakie znaczenie ma fragment tekstu (np. Q
, DFN
),
jak i służące wyłącznie do formatowania (np. B
, I
).
Niektóre elementy i atrybuty są w HTML 4 uznane za niezalecane deprecated,
a zamiast nich należy używać styli zapisanych np. w CSS.
Wiele elementów służy do zapisywania takich struktur jak listy czy tablice. Ważnym składnikiem HTML są odnośniki i formularze.
Extensible Hypertext Markup Language jest nową generacją języków opartych o HTML, służących do publikowania treści w Internecie. Główne idee przyświecające przejściu z HTML do XHTML:
XHTML 1.0 jest po prostu przeformułowaniem standardu HTML 4 jako zastosowania XML. Dokument XHTML jest jednocześnie dokumentem XML, w związku z tym składnia musi być w pełni rozwinięta i jednoznaczna.
XHTML 1.1 wraz ze standardem XHTML Modularization definiują XHTML jako zbiór modułów takich jak Text Module, List Module czy Forms Module. Określony jest domyślny zestaw modułów, jakiego można używać, ale autor dokumentu XHTML może dołączyć dodatkowe moduły (a także zawęzić ich zestaw) poprzez odpowiednie wpisy w DTD (lub definiując swój własny schemat XML Schema includujący wybrane moduły).
Niedokończony jeszcze standard XHTML 2.0 kontynuuje ścieżkę "modularyzacji", przy czym niektóre fragmenty pochodzące z HTML zostaną zastąpione nowymi standardami (np. XForms zamiast formularzy HTML). Ogólnie ma być bardziej "semantycznie" i "strukturalnie".