WebReporter
n a s z e    s e r w i s y
@ WebReporter
@ Reporter
@ BizReporter
@ FotoReporter
@ Gry
@ Junior
@ Forum dyskusyjne
@ Og│oszenia
r e k l a m a
j e d n y m    k l i k i e m:
- WebNEWS
- kafejki internetowe
- kartki elektroniczne
- ranking foto
- Bank Pomys│≤w
- Encyklopedia Internetu
- Super Strony
- szukaj w Internecie
- za│≤┐ darmowy e-mail
- za│≤┐ darmowe WWW
- wymie± bannery
- pobierz programy


<<< poprzedni artyku│ spis tre╢ci nastΩpny artyku│ >>>
-= WARSZTAT =-
WebReporter nr 12 - 2000.12.15 Piotr "Merlin" Krajewski, www

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:
  1. Znaczniki nie mog▒ siΩ krzy┐owaµ
  2. Ka┐dy znacznik musi byµ zamkniΩty
  3. Znaczniki nie posiadaj▒ce znacznika zamykaj▒cego musz▒ byµ wyszczeg≤lnione
  4. Wszystkie atrybuty musz▒ byµ ujΩte w cudzys│owy lub apostrofy
  5. 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.
  1. master-name - warto╢µ dowolna nazwa
  2. bacground-attachment - warto╢ci fixed i domy╢lna scroll.
  3. bacground-color - warto╢ci opisu koloru, domy╢lna transparent
  4. bacground-image - warto╢ci URI, domy╢lna none
  5. backround-position-x - warto╢µ d│ugo╢µ, domy╢lna left, center, right
  6. backround-position-y - warto╢µ d│ugo╢µ, midle, bottom, domy╢lna top
  7. bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
  8. page-height - warto╢µ d│ugo╢µ, domy╢lna auto
  9. page-width - warto╢µ d│ugo╢µ, domy╢lna auto
  10. page-writing-mode - warto╢µ definicja sposobu pisania, el-td domy╢lna
  11. margin - bottom, left, right, top - warto╢µ rozmiar w pt
  12. body-overflow - warto╢ci visible, hiden, scroll, domy╢lna auto
  13. body-writing-mode - warto╢µ definicji sposobu pisania, jak dla strony
  14. end-side-overflow - warto╢ci visible, hiden, scrool, auto domy╢lna
  15. end-side-separation - warto╢µ w pt
  16. end-side-size - warto╢µ w pt
  17. end-side-writing-mode - warto╢µ definicja sposobu pisania i jak dla strony
  18. footer-overlow - warto╢ci visible, hidden, scrool i domy╢lna auto
  19. footer-precedence - warto╢µ false, domy╢lna true
  20. footer-separation - warto╢µ w pt
  21. footer-size - warto╢µ w pt
  22. footer-writing-mode - warto╢µ definicja sposobu pisania, jak dla strony
  23. header-overflolw - warto╢ci visible, hidden, scroll i domy╢lna auto
  24. header-precedence - warto╢µ true domy╢lna i false
  25. header-separation - warto╢µ w pt
  26. header-size - warto╢µ w pt
  27. header-writing-mode - definicja sposbu pisania, jak dla strony
  28. star-side-separation - warto╢µ w pt
  29. star-side-size - warto╢µ w pt
  30. start-size-overflow - warto╢ci visible, hidden, scroll, domy╢lna auto
  31. star-size-writing-mode - warto╢ci definicja sposobu pisania, jak dla strony
block
Element block u┐ywany jest do tworzenia blok≤w tekstu.
  1. language - warto╢ci none, specifikacja-wg-xml:lang domy╢lna use-document
  2. background-atchment - warto╢ci fixed, domy╢lna scroll
  3. backroudd-color - warto╢ci - opis koloru, domy╢lna transparent bacground-image - warto╢ci URI, domy╢lna none
  4. backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
  5. backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
  6. bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
  7. font-family - warto╢ci nazwa czcionki
  8. font-style - warto╢ci italic, oblique, normal
  9. font-stretch - warto╢ci ultra-condensed, extra-condensed, semi-condensed, semi-epanded, extra-epanded, ultra-expanded, domy╢lna normal
  10. font-size - warto╢µ w pt
  11. font-variant - warto╢ci small caps, normal domy╢lna
  12. 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
  13. glyph-alignment-mode - warto╢ci base, center, top, bottom, domy╢lna font
  14. indent-end - warto╢ci w pt
  15. indent-star - warto╢ci w pt
  16. indent-first-line-start- warto╢µ w pt
  17. breake-after - warto╢ci page, page-odd, page-even, none domy╢lna
  18. breake-before - warto╢ci page-odd, page-even, none domy╢lna
  19. keep-width-next - warto╢ci true, domy╢lna false
  20. keep-widht-previous - warto╢ci true, false domy╢lna
  21. keep - warto╢ci none-brake, page, domy╢lna auto
  22. block-line-braking - warto╢ci asis, asis-wrap, asis-truncate, none, dpmy╢lna wrap
  23. bloc-asis-truncate-indicator - warto╢ci znak, none domy╢lna
  24. block-asis-wrap-indicator - warto╢ci znak, domy╢lna none
  25. block-asia-wrap-indent - warto╢µ w pt
  26. hiphenation-keep - warto╢ci spread, page, page, column, none domy╢lna
  27. text-align - warto╢ci end, left, right, spread-inside; outside, page-inside, page-out-side, center, start domy╢lna
  28. text-align-last = wartro╢ci auto, end, left, rightspread-inside; outside, page-inside, page-out-side, center, start domy╢lna
  29. linespacing-strategy - warto╢ci fixed, auto domy╢lna
  30. linespacing - wato╢µ w pt
  31. space-after-maximum, optimum, minimum - warto╢ci w pt
  32. space-before-maximum, optimum, minimum - warto╢ci w pt
  33. writing-mode - warto╢ci definicja sposobu pisania, domy╢lan lr-tb
    charcter
    Character u┐ywany jest kiedy chcesz formatowaµ jeden, pojedynczy znak
  34. background-attachment - warto╢ci fixed i domy╢lna scroll.
  35. background-color - warto╢ci opis koloru, domy╢lna transparent
  36. bacground-image - warto╢ci URI, domy╢lna none
  37. backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
  38. backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
  39. bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
  40. text-shadow - tak jak w CSS
  41. text-transform - warto╢ci lower, upper, title, wato╢µ domy╢lna as-entered
  42. char
  43. char-kern
  44. cher-kern-mode
  45. char-ligature
  46. color
  47. font-specification
  48. glyph-alignment-mode
  49. hyphenate
  50. hyphenation-char
  51. inhibit-wrap
  52. language
  53. position-point-shift
  54. leter-space-after-maximum
  55. leter-space-after-minimum
  56. leter-space-after-optimum
  57. word-spacing-maximum
  58. word-spacing-optimum
  59. word-spacing-minimum
  60. text-shadow
  61. text-trasform - warto╢ci captialize, uppercase, lawercase, none domy╢lna
  62. writing-none
    list
    List tworzy obszar blokowy z list▒.
      bacground-attachment - warto╢ci fixed i domy╢lna scroll.
    1. bacground-color - warto╢ci opis koloru, domy╢lna transparent
    2. bacground-image - warto╢ci URI, domy╢lna none
    3. backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
    4. backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
    5. bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
    6. break-before - warto╢ci page, page-odd, page-even, domy╢lna none.
    7. break-after - warto╢ci page, page-odd, page-even, domy╢lna none.
    8. indent-star, end - warto╢µ w pt
    9. indent-after-minimum, maximum, optimum - warto╢µ w pt
    10. indent-before-minimum, maximum, optimum - warto╢µ w pt
    list-item
    List-item zawiera etykietΩ i tre╢µ pozycji listy.
    1. bacground-color - warto╢ci opis koloru, domy╢lna transparent
    2. bacground-image - warto╢ci URI, domy╢lna none
    3. backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
    4. backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
    5. bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
    6. indent-start - warto╢µ w pt
    7. indent-end - warto╢µ w pt
    8. indent-after-minimum, maximum, optimum - warto╢µ w pt
    9. 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.
  63. bacground-color - warto╢ci opis koloru, domy╢lna transparent
  64. bacground-image - warto╢ci URI, domy╢lna none
  65. backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
  66. backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
  67. bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
  68. label-witdh - warto╢µ w pt
  69. space-end - warto╢µ w pt
  70. label-separator - warto╢µ w pt
list-item-body
Zawiera sk│adniki opisuj▒ce pozycjΩ listy
  1. bacground-color - warto╢ci opis koloru, domy╢lna transparent
  2. bacground-image - warto╢ci URI, domy╢lna none
  3. backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
  4. backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
  5. 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.
    1. bacground-color - warto╢ci opis koloru, domy╢lna transparent
    2. bacground-image - warto╢ci URI, domy╢lna none
    3. backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
    4. backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
    5. bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
    6. color
    7. block-level-aligment
    8. break-after, before
    9. graphic-line-thickness
    10. indent-end, start
    11. keep-with-previus, next
    12. rule-graphic-length, orientation
    13. position-point-shift
    14. space-after-maximum, minimum, optimum
    15. space-before-maximum, minimum, optimum
    16. writing-mode
    display-graphic
    Disply-graphic s│u┐y do tworzenia blok≤w zawieraj▒cych grafikΩ.
  6. bacground-color - warto╢ci opis koloru, domy╢lna transparent
  7. bacground-image - warto╢ci URI, domy╢lna none
  8. backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
  9. backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
  10. bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
  11. inline
  12. block-level-aligment
  13. break-after, before
  14. color
  15. external-graphic-id
  16. graphic-max-height, witdh
  17. grphic-scale
  18. indent-start, wrap, end
  19. keep-with-previous, next
  20. position-point-x, y
  21. postion-preference
  22. keep
  23. space-after-maximum, minimum, optimum
  24. space-before-maximum, minimum, optimum

inline-box

  1. writing-mode
  2. space-after-maximum, minimum, optimum
  3. space-before-maximum, minimum, optimum
  4. keep-with-previous, next
  5. keep
  6. inhibit-textline-breaks
  7. indent-start, end
  8. graphic-line-thickness
  9. color
  10. box-type
  11. box-size-befor
  12. box-size-after
  13. break-before, after
  14. box-open-end
  15. boxreserve-end

link

  1. bacground-color - warto╢ci opis koloru, domy╢lna transparent
  2. bacground-image - warto╢ci URI, domy╢lna none
  3. backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
  4. backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
  5. bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
  6. marge-link-end-locators - warto╢ci false i domy╢lna true

link-end-locator

  1. bacground-color - warto╢ci opis koloru, domy╢lna transparent
  2. bacground-image - warto╢ci URI, domy╢lna none
  3. backround-position-x - warto╢ci d│ugo╢µ, domy╢lna left, center, right
  4. backround-position-y - warto╢ci d│ugo╢µ, midle, bottom, domy╢lna top
  5. bacground-repeat - warto╢ci no-repeat, repeat-x, repeat-y, domy╢lna repeat
  6. href - z XPointer
  7. show-content - warto╢ci true domy╢lna i false

Autor prowadzi serwis dla webmaster≤w HTMLZone - zapraszamy.
+ HTMLZONE - www.language.pnet.pl

[spis tre╢ci][do g≤ry]