WstΩp do XML
XML - eXtensible Markup Language, czyli Rozszerzalny JΩzyk Zancznik≤w. XML jest m│odsz▒ wersj▒ SGML, do kt≤rego rodziny nale┐y HTML. XML nie jest pojedynczym jΩzykiem lecz ca│▒ rodzin▒ jΩzyk≤w sk│▒dajac▒ siΩ z tak zwanych dialekt≤w. Ka┐dy programista mo┐e stworzyµ w│asny dialekt jΩzyka XML. CzΩsto uwa┐a siΩ, ┐e celem XML jest zast▒pienie HTML, jest to jednak nieprwda poniewa┐ W3C o╢wiadczy│o, ┐e:
- XML nie jest samodzielnym jΩzykiem lecz ca│▒ grup▒ jΩzyk≤w opartych na tych samych zasadach
- Dokumenty XML nie s▒ tekstem przeznaczonym bezpo╢rednio do czytania
- XML nie jest 100% nowym jΩzykiem
- XML ma podobne cechy do HTML - ale nie ma z nim nic wsp≤lnego
Faktem jest, ┐e do rodziny XML nale┐y XHTML 1.0 - nastΩpca HTML poniewa┐ W3C og│osi│a i to ju┐ ca│kiem dawno, ┐e prace nad HTML nie bed▒ kontynuowane.
Dokument XML i jego sk│adnia
Dokumenty XML nie s▒ dokumentami przeznaczonymi bespo╢rednio do czytania, a za ich formatowanie odpowiada zewnetrzny plik styli. XML posiada sw≤j w│asny jΩzyk styli XSL, czyli Rozszerzony JΩzyk Styli. Mo┐liwe jest tak┐e formatowanie dokumentu XML za pomoc▒ CSS, ale o tym p≤╝niej. Domy╢lnym systemem kodowania znak≤w w dokumencie XML jest Unicode. Sk│adnia XML jest bardzo prosta, ogranicza siΩ z grubsza do kilku zasad:
- Znaczniki nie mog▒ siΩ krzy┐owaµ
- Ka┐dy znacznik musi byµ zamkniΩty
- Znaczniki nie posiadaj▒ce znacznika zamykaj▒cego musz▒ byµ wyszczeg≤lnione
- Wszystkie atrybuty musz▒ byµ ujΩte w cudzys│owy lub apostrofy
- Ca│y dokument musi byµ ujΩty w jeden znacznik; musi stanowiµ jeden element.
I jeszcze moja uwaga - interpretatory XML rozpoznaj▒ ma│e i wielki litery, a wiΩc znacznik XML nie jest tym samym co xml.
Najprostrzy dokument XML mia│by tak▒ postaµ:
<eZiny>
<pisz>Reporter</pisz>
<pisz>WebReporter</pisz>
<pisz>HTMLZone</pisz>
</eZiny>
Do wy╢wietlania dokument≤w XML potrzebna jest przegl▒darka IE w wersji 4.0 lub wy┐szej lub inna z zainstalowanym pluginem.
A wyglada│oby tak: proszΩ klikn▒µ.
Jak widaµ dokument isnieje i dzia│a, jednak nie jest czytelny.
Ka┐dy dokument XML musi obowi▒zkowo zawieraµ deklaracjΩ XML, kt≤ra ma nastΩpujac▒ postaµ:
<?xml version="numer_wersji" encoding="deklaracja_strony_kodowej"
standalone="standalone_status"?>
Gdzie version okre╢la wersjΩ jΩzyka, w naszym wypadku 1.0, deklaracji strony kodowej, to nic innego jak okre╢lenie sposobu kodowania.
Do okre╢lania zawarto╢ci dokumentu XML s│u┐y Deklaracja Typu Dokumentu -DTD. Zawieraj▒ j▒ zar≤wno dokumenty XML jak i SGML.
Formatowanie dokumentu XML
Jak pisa│em do formatowania dokument≤w XML mo┐na u┐ywaµ zar≤wno styli XML jak i HTMLowych CSS. W pierwszej kolejno╢ci zajmiemy siΩ tymi drugimi, jako, ┐e z ca│▒ pewno╢ci▒ wiΩcej os≤b zna style kaskadowe ni┐ style XSL, te jednak om≤wimy dok│adniej. Na pocz▒tku dekumentu w deklaracji XML obok wersji musimy okre╢liµ adres i typ pliku styli. W naszym przypadku jest to:
<?xml version="1.0":stylesheet href="nazwaarkusza.css"
type="text/css">
NastΩpnie w dokumencie CSS deklarujemy wygl▒d dla ka┐dego znacznika, np. we╝my znacznik <pisz> wyglada│o by to tak:
pisz {color:blue; font-face:arial;}
Sp≤jrzmy teraz na nasz dokument: Wygl▒da mniej wiΩcej tak:
<?xml:stylesheet href="styl.css" type="text/css"?>
<eZiny>
<pisz>Reporter</pisz>
<pisz>WebReporter</pisz>
<pisz>HTMLZone</pisz>
</eZiny>
A teraz zobaczmy go w przegl▒darce
T▒ metod▒ najpro╢ciej jest okre╢liµ wygl▒d dokumentu XML, u┐ywaj▒c do tego powszechnie znanej nam technologii. WiΩksze mo┐liwo╢ci oferuj▒ jednak style XSL, nieco trudniejsze, ale c≤┐.
Odwo│anie do zewnΩtrznego pliku *.xsl deklaruje siΩ podobnie jak do .css z tym, ┐e zamiast text/css nale┐y wstawiµ text/xsl. Plik styli XSL maj▒ domy╢lne rozszerzenie xsl. Podstawowym elementem arkusza XSL jest regu│a szablonu. Opisuje ona jak wΩze│ elementu XML ma byµ przekszta│cony na wΩze│ XSL. Regu│a ta sk│ada siΩ z dw≤ch czΩ╢ci - pierwszej, okre╢laj▒cej wΩze│ XML i drugiej, opisuj▒cej dok│adnie zasady interpretacji wΩz│≤w. Najlepszym rozwi▒zaniem jest umieszczenie opisu wszystkich element≤w, dla kt≤rych jest to mo┐liwe, przy opisie elementu g│≤wnego. Dokonuje siΩ tego za pomoc▒ uko╢nika /:
<xsl:template match= "/">
Elementy mo┐na dobieraµ na wiele sposob≤w. Wybieranie wed│ug ID ma nastΩpuj▒c▒ postaµ:
<xsl:template match="id(warto╢µ id)">
Dobieranie wed│ug nazwy odbywa siΩ w nastΩpuj▒cy spos≤b:
<xsl:template match="nazwa">
Dobieranie wed│ug przodk≤w:
<xsl:template match="element/w│asno╢µ">
Wyb≤r mo┐e byµ bardziej z│o┐ony mo┐na np. okre╢liµ kolejne elementy podrzΩdne. Dobieranie na podstawie atrybut≤w:
<xsl:template match="atrybut1 | atrybut2">
Wed│ug jego po│o┐enia:
first-of-any() - pierwszy element na danym poziomie
first-of-type() - pierwszy na danym poziomie
last-of-any() - ostatni na danym poziomie
last-of-type() - ostatni na danym poziomie
first-of-any() - jedyny element na danym poziomie
first-of-type() - jedyny element na danym poziomie
not-first-of-any() - element nie mo┐e byµ pierwszym elementem na tym samym poziomie
not-firs-of-type() - element nie mo┐e byµ pierwszym elementem na tym samym poziomie
not-last-of-any() - element nie mo┐e byµ ostatnim elementem na tym samym poziomie
not-last-of-type() - element nie mo┐e byµ ostatnim elementem na tym samym poziomie
not-only-of-any() - element musi mieµ conajmniej jeden element na tym samym poziomie
not-only-od-type() - element musi mieµ jeden element tego typu na tym samym poziomie
Obiekty formatuj▒ce w XML
Obiekty formatuj▒ce deklaruje siΩ za pomoc▒ fo:
<xsl template match="wzor">
<fo: obiektFormatujacy>
Tresc
</fo:obiektFormatujacy>
</xsl template>
Dwa najwa┐niejsze obiekty formatuj▒ce tosingle-page-master i page-sequance. Page-sequence jest przodkiem ci▒gu stron drukowanych lub wy╢wietlanych na ekranie. Page-sequance zawiera przynajmniej jeden obiekt formatuj▒cy lub ci▒g stron. Simple-page-master opisuje stronΩ, mo┐e byµ podzielona na sze╢µ obszar≤w. Element musi zawieraµ atrybut master-name, mo┐e on mieµ nastΩpuj▒ce warto╢ci:
first - formatuje pierwsz▒ stronΩ ci▒gu
odd - odpowiednik strony na lewo na wydruku
even - na prawo na wydruku
scrooling - typ strony u┐ywanej do wy╢wietlania na ekranie
Zawarto╢µ fo:
display-graphic - wstawienie samodzielnej grafiki
quene - ma atrybuty" title, header, body, footer, start-side
sequence - u┐ywa siΩ go do grupowanie obiekt≤w formatuj▒cych dziedzicz▒cych jeden zestaw w│asno╢ci
block - wstawia znak ko±ca wiersza przed i po bloku
inline-included-container - pe│ni rolΩ obiektu w│▒czaj▒cego typu inline, kt≤ry umo┐liwia pod╢wietlenie tekst lub grafiki
link-end-locator - umo┐liwia umieszczenie informacji o miejscu wskazaniem przez │▒cze
list - jest pojemnikiem dla obiekt≤w formatuj▒cych list-item, list-item-label i list-item-body.
page-number - s│u┐y do instruowanie interpretatora aby umie╢ci│ numer strony
display-rule - odpowiednik znacznika HR
inline-grafhic - s│u┐y do wstawiania grafiki w ramach wiersza
block-group - s│u┐y do grupowanie innych obiekt≤w blokowych
link - tworzy obszar, w kt≤rym znajdzie siΩ obszar przep│ywu
character - pozwala traktowaµ znak jako obiekt przep│ywu
Instrukcje makro
Instrukcje makro pozwalaj▒ wielokrotnie u┐ywaµ tego samego arkusz styl≤w. Oto przyk│ad instrukcji makro:
<xsl:define-makro name="nazwa">
<fo:nazwaObiektu
TrescMakra>
<xsl:contens/>
<fo:/nazwaObiektu>
</xsl:define-makro>
Instrukcje makro wywo│uje siΩ mniej wiΩcej tak:
<xsl:template match="nazwa">
<xsl:invoke makro="nazwaMarka">
<xsl:aplly-tamplates/>
</invoke>
</xsl:template>
W│asno╢ci obiekt≤w formatuj▒cych
Simple-page-master
W│asno╢µ simple-page-master odowiada za uk│ad strony. Przedstawimy poni┐ej w│asno╢ci tego obiektu formatuj▒cego i jego atrybuty.
- master-name - warto╢µ dowolna nazwa
- bacground-attachment - warto╢ci fixed i domy╢lna scroll.
- bacground-color - warto╢ci opisu koloru, domy╢lna transparent
- bacground-image - warto╢ci URI, domy╢lna none
- backround-position-x - warto╢µ d│ugo╢µ, domy╢lna left, center, right
- backround-position-y - warto╢µ d│ugo╢µ, midle, bottom, domy╢lna top
- bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
- page-height - warto╢µ d│ugo╢µ, domy╢lna auto
- page-width - warto╢µ d│ugo╢µ, domy╢lna auto
- page-writing-mode - warto╢µ definicja sposobu pisania, el-td domy╢lna
- margin - bottom, left, right, top - warto╢µ rozmiar w pt
- body-overflow - warto╢ci visible, hiden, scroll, domy╢lna auto
- body-writing-mode - warto╢µ definicji sposobu pisania, jak dla strony
- end-side-overflow - warto╢ci visible, hiden, scrool, auto domy╢lna
- end-side-separation - warto╢µ w pt
- end-side-size - warto╢µ w pt
- end-side-writing-mode - warto╢µ definicja sposobu pisania i jak dla strony
- footer-overlow - warto╢ci visible, hidden, scrool i domy╢lna auto
- footer-precedence - warto╢µ false, domy╢lna true
- footer-separation - warto╢µ w pt
- footer-size - warto╢µ w pt
- footer-writing-mode - warto╢µ definicja sposobu pisania, jak dla strony
- header-overflolw - warto╢ci visible, hidden, scroll i domy╢lna auto
- header-precedence - warto╢µ true domy╢lna i false
- header-separation - warto╢µ w pt
- header-size - warto╢µ w pt
- header-writing-mode - definicja sposbu pisania, jak dla strony
- star-side-separation - warto╢µ w pt
- star-side-size - warto╢µ w pt
- start-size-overflow - warto╢ci visible, hidden, scroll, domy╢lna auto
- star-size-writing-mode - warto╢ci definicja sposobu pisania, jak dla strony
block
Element block u┐ywany jest do tworzenia blok≤w tekstu.
- language - warto╢ci none, specifikacja-wg-xml:lang domy╢lna use-document
- background-atchment - warto╢ci fixed, domy╢lna scroll
- backroudd-color - warto╢ci - opis koloru, domy╢lna transparent
bacground-image - warto╢ci URI, domy╢lna none
- backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
- backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
- bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
- font-family - warto╢ci nazwa czcionki
- font-style - warto╢ci italic, oblique, normal
- font-stretch - warto╢ci ultra-condensed, extra-condensed, semi-condensed, semi-epanded, extra-epanded, ultra-expanded, domy╢lna normal
- font-size - warto╢µ w pt
- font-variant - warto╢ci small caps, normal domy╢lna
- font-weight - warto╢ci any, not-applicable, ultr-light, extra-light, light, semi-light, book, medium, semi-bold, bold, extra-bold, ultra-bold domy╢lna - normal
- glyph-alignment-mode - warto╢ci base, center, top, bottom, domy╢lna font
- indent-end - warto╢ci w pt
- indent-star - warto╢ci w pt
- indent-first-line-start- warto╢µ w pt
- breake-after - warto╢ci page, page-odd, page-even, none domy╢lna
- breake-before - warto╢ci page-odd, page-even, none domy╢lna
- keep-width-next - warto╢ci true, domy╢lna false
- keep-widht-previous - warto╢ci true, false domy╢lna
- keep - warto╢ci none-brake, page, domy╢lna auto
- block-line-braking - warto╢ci asis, asis-wrap, asis-truncate, none, dpmy╢lna wrap
- bloc-asis-truncate-indicator - warto╢ci znak, none domy╢lna
- block-asis-wrap-indicator - warto╢ci znak, domy╢lna none
- block-asia-wrap-indent - warto╢µ w pt
- hiphenation-keep - warto╢ci spread, page, page, column, none domy╢lna
- text-align - warto╢ci end, left, right, spread-inside; outside, page-inside, page-out-side, center, start domy╢lna
- text-align-last = wartro╢ci auto, end, left, rightspread-inside; outside, page-inside, page-out-side, center, start domy╢lna
- linespacing-strategy - warto╢ci fixed, auto domy╢lna
- linespacing - wato╢µ w pt
- space-after-maximum, optimum, minimum - warto╢ci w pt
- space-before-maximum, optimum, minimum - warto╢ci w pt
- writing-mode - warto╢ci definicja sposobu pisania, domy╢lan lr-tb
charcter
Character u┐ywany jest kiedy chcesz formatowaµ jeden, pojedynczy znak
- background-attachment - warto╢ci fixed i domy╢lna scroll.
- background-color - warto╢ci opis koloru, domy╢lna transparent
- bacground-image - warto╢ci URI, domy╢lna none
- backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
- backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
- bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
- text-shadow - tak jak w CSS
- text-transform - warto╢ci lower, upper, title, wato╢µ domy╢lna as-entered
- char
- char-kern
- cher-kern-mode
- char-ligature
- color
- font-specification
- glyph-alignment-mode
- hyphenate
- hyphenation-char
- inhibit-wrap
- language
- position-point-shift
- leter-space-after-maximum
- leter-space-after-minimum
- leter-space-after-optimum
- word-spacing-maximum
- word-spacing-optimum
- word-spacing-minimum
- text-shadow
- text-trasform - warto╢ci captialize, uppercase, lawercase, none domy╢lna
- writing-none
list
List tworzy obszar blokowy z list▒.
bacground-attachment - warto╢ci fixed i domy╢lna scroll.
- bacground-color - warto╢ci opis koloru, domy╢lna transparent
- bacground-image - warto╢ci URI, domy╢lna none
- backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
- backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
- bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
- break-before - warto╢ci page, page-odd, page-even, domy╢lna none.
- break-after - warto╢ci page, page-odd, page-even, domy╢lna none.
- indent-star, end - warto╢µ w pt
- indent-after-minimum, maximum, optimum - warto╢µ w pt
- indent-before-minimum, maximum, optimum - warto╢µ w pt
list-item
List-item zawiera etykietΩ i tre╢µ pozycji listy.
- bacground-color - warto╢ci opis koloru, domy╢lna transparent
- bacground-image - warto╢ci URI, domy╢lna none
- backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
- backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
- bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
- indent-start - warto╢µ w pt
- indent-end - warto╢µ w pt
- indent-after-minimum, maximum, optimum - warto╢µ w pt
- indent-before-minimum, maximum, optimum - warto╢µ w pt
list-item-label
List-item-label u┐ywany jest do wyliczania, ozdabiania lub identyfikacji tre╢ci ka┐dej pozycji listy.
- bacground-color - warto╢ci opis koloru, domy╢lna transparent
- bacground-image - warto╢ci URI, domy╢lna none
- backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
- backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
- bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
- label-witdh - warto╢µ w pt
- space-end - warto╢µ w pt
- label-separator - warto╢µ w pt
list-item-body
Zawiera sk│adniki opisuj▒ce pozycjΩ listy
- bacground-color - warto╢ci opis koloru, domy╢lna transparent
- bacground-image - warto╢ci URI, domy╢lna none
- backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
- backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
- bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
rule-graphic
Rule-graphic jest graficzn▒ interpretacj▒ odcinka, kt≤ry jest u┐ywany do robienia podkre╢le± i kresek.
- bacground-color - warto╢ci opis koloru, domy╢lna transparent
- bacground-image - warto╢ci URI, domy╢lna none
- backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
- backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
- bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
- color
- block-level-aligment
- break-after, before
- graphic-line-thickness
- indent-end, start
- keep-with-previus, next
- rule-graphic-length, orientation
- position-point-shift
- space-after-maximum, minimum, optimum
- space-before-maximum, minimum, optimum
- writing-mode
display-graphic
Disply-graphic s│u┐y do tworzenia blok≤w zawieraj▒cych grafikΩ.
- bacground-color - warto╢ci opis koloru, domy╢lna transparent
- bacground-image - warto╢ci URI, domy╢lna none
- backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
- backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
- bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
- inline
- block-level-aligment
- break-after, before
- color
- external-graphic-id
- graphic-max-height, witdh
- grphic-scale
- indent-start, wrap, end
- keep-with-previous, next
- position-point-x, y
- postion-preference
- keep
- space-after-maximum, minimum, optimum
- space-before-maximum, minimum, optimum
inline-box
- writing-mode
- space-after-maximum, minimum, optimum
- space-before-maximum, minimum, optimum
- keep-with-previous, next
- keep
- inhibit-textline-breaks
- indent-start, end
- graphic-line-thickness
- color
- box-type
- box-size-befor
- box-size-after
- break-before, after
- box-open-end
- boxreserve-end
link
- bacground-color - warto╢ci opis koloru, domy╢lna transparent
- bacground-image - warto╢ci URI, domy╢lna none
- backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
- backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
- bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
- marge-link-end-locators - warto╢ci false i domy╢lna true
link-end-locator
- bacground-color - warto╢ci opis koloru, domy╢lna transparent
- bacground-image - warto╢ci URI, domy╢lna none
- backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
- backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
- bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
- href - z XPointer
- show-content - warto╢ci true domy╢lna i false
|