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]